Sberbank рдкрд░ рд╣рдорд╛рд░реА рдЯреАрдо рдПрдХ рд╕рддреНрд░ рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХрд▓ рдЬрд╛рд╡рд╛ рд╕рддреНрд░ рд╕рдВрджрд░реНрдн рдХреЗ рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЛ рддрддреНрдХрд╛рд▓ рдЬрд╛рд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╣реБрдд рддреЗрдЬрд╝ рдХреНрд░рдорд╛рдВрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдорд┐рд╢рди рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡реЗ рд╣рдорд╛рд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдП: Google рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ , рдЕрдкрд╛рдЪреЗ рдереНрд░рд┐рдлреНрдЯ , рдЕрдкрд╛рдЪреЗ рдПрд╡рд░реЛ , рд╕реАрдмреАрдУрдЖрд░рдФрд░ рдЕрдиреНрдпред рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рддреАрди рдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдХреАрдорд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реАрдмреАрдУрдЖрд░ рдЗрддрдирд╛ рдирд┐рдореНрди-рд╕реНрддрд░ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдХреЗрд▓рд░ рдореВрд▓реНрдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕реЗрдЯреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬреЛ рдХрд┐ "рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдкреВрдЫ рд░рд╣рд╛ рдерд╛" рдФрд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ "рдкрд░рдорд╛рдгреБрдУрдВ рдореЗрдВ" рдЫрд╛рдБрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдордирдорд╛рдирд╛ рдЬрд╛рд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЬрд╛рд╡рд╛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ред
рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ
рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдЕрдиреНрдп рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ редрдпреЗ рд░рд╣рд╛!рджреМрдбрд╝
рдЧрддрд┐ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдорд╛рдирджрдВрдб рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЗрдВрдкреНрд░реЛрдореЗрдкреНрдЯреВ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВред рдХреНрд░рдордмрджреНрдз рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрд░рдордмрджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рддреЗрдЬреА рд╕реЗ рд╣реИ, рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓реЙрдЧ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд▓рд┐рдпрд╛ рдФрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд▓рдВрдмрд╛рдИ рдХрд╛ рдбреЗрдЯрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рд╕реЗ рдмрдирд╛рдпрд╛ : 0 рд╕реЗ 1 рдПрдордмреАред рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпрд╛рдБ рдерд╛редрдиреЛрдЯ: рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рдЬреЗрддрд╛ рдФрд░ рд╣рд╛рд░реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 0 рд╕реЗ 10 рдХреЗрдмреА рд╕реЗ рдХреНрд░рдорд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ 1 рдПрдордмреА рдХреА рд╡реГрджреНрдзрд┐ рдиреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдмреЗрд╣рддрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд░рд╛рдлрд╝ 10 KB рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред
, :: , IBM JRE One Nio ( 13 14). sun.reflect.MagicAccessorImpl
private
final
( ) , . , IBM JRE sun.reflect.MagicAccessorImpl
, , runtime .
(, Serialization-FAQ, One Nio ), fork , sun.reflect.MagicAccessorImpl
. sun.reflect.MagicAccessorImpl
fork- sun.misc.Unsafe
.
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЖрдИрдмреАрдПрдо рдЬреЗрдЖрд░рдИ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ 30-40% рддреЗрдЬреА рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╡рди рдиреАрдпреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ, рди рдХрд┐ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ред
рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди / рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдкреАрдб рдХрд╛ рд╕реАрдзрд╛ рдорд╛рдк рдЬрд╛рд╡рд╛ рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдорд╛рд░реНрдХ рд╣рд╛рд░реНрдиреЗрд╕ (рдЬреЗрдПрдордПрдЪ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдмреЗрдВрдЪрдорд╛рд░реНрдХ-рдПрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрдирдЬреЗрдбрдХреЗ рд╕реЗ рдПрдХ рдЙрдкрдХрд░рдгред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдк рдХреЗ рд▓рд┐рдП (рдЧреНрд░рд╛рдл рдкрд░ рдПрдХ рдмрд┐рдВрджреБ), 5 рд╕реЗрдХрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЗрд╡реАрдПрдо рдХреЛ "рд╡рд╛рд░реНрдо рдЕрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рдФрд░ 5 рд╕реЗрдХрдВрдб рдХреЗ рд╕рдордп рдХреЗ рдорд╛рдк рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ, рдФрд╕рддрдиредрдпреБрдкреАрдбреА:рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ JMH рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛрдбpublic class SerializationPerformanceBenchmark {
@State( Scope.Benchmark )
public static class Parameters {
@Param( {
"Java standard",
"Jackson default",
"Jackson system",
"JacksonSmile default",
"JacksonSmile system",
"Bson4Jackson default",
"Bson4Jackson system",
"Bson MongoDb",
"Kryo default",
"Kryo unsafe",
"FST default",
"FST unsafe",
"One-Nio default",
"One-Nio for persist"
} )
public String serializer;
public Serializer serializerInstance;
@Param( { "0", "100", "200", "300", /*... */ "1000000" } )
public int sizeOfDto;
public Object dtoInstance;
public byte[] serializedDto;
@Setup( Level.Trial )
public void setup() throws IOException {
serializerInstance = Serializers.getMap().get( serializer );
dtoInstance = DtoFactory.createWorkflowDto( sizeOfDto );
serializedDto = serializerInstance.serialize( dtoInstance );
}
@TearDown( Level.Trial )
public void tearDown() {
serializerInstance = null;
dtoInstance = null;
serializedDto = null;
}
}
@Benchmark
public byte[] serialization( Parameters parameters ) throws IOException {
return parameters.serializerInstance.serialize(
parameters.dtoInstance );
}
@Benchmark
public Object unserialization( Parameters parameters ) throws IOException, ClassNotFoundException {
return parameters.serializerInstance.deserialize(
parameters.serializedDto,
parameters.dtoInstance.getClass() );
}
}
рдпрд╣рд╛рдВ рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд░рдордмрджреНрдзрддрд╛ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд▓реНрдк рд╕рдорд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореЗ рд╣реИрдВ ("рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде" рдФрд░ "рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЗрдЦреЗрдВ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЬреИрдХреНрд╕рди рдЬреЗрдиреНрд╕рди рдФрд░ Bson4Jackson, рдЬреЛ рджреМрдбрд╝ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ, рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрд╛рд╣рд░реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╡рд╛ рдорд╛рдирдХ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреМрдбрд╝ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд░рдорд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, deserialization рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред рд╢реЗрд╖ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдлрдПрд╕рдЯреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рднрд░реЗ рдиреЗрддрд╛рдУрдВ рдореЗрдВ рд╣реИ
, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдПрдХ Nio "рдЙрд╕рдХреА рдПрдбрд╝реА рдкрд░ рдХрджрдо" ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рди Nio рдХреЗ рд▓рд┐рдП, " рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП" рд╡рд┐рдХрд▓реНрдк рдХреНрд░рдорд┐рдХ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИредрдпрджрд┐ рдЖрдк рдбреАрд░рд┐рдПрд░рд▓рд╛рдЗрдЬреЗрд╢рди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рди рдПрдирдЖрдИрдУ рдмрдврд╝рддреЗ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдлрдПрд╕рдЯреА рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЧреИрд░-рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди "рдЕрд╕реБрд░рдХреНрд╖рд┐рдд" рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдирд┐рд░реНрдЬрд▓реАрдХрд░рдг рдХрд░рддрд╛ рд╣реИредAND рдкрд░ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреНрд░рдордмрджреНрдзрддрд╛ рдФрд░ рд╡рд┐рдЪрд▓рди рдХреЗ рдХреБрд▓ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦреЗрдВ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рджреЛ рдЕрд╕рдорд╛рди рдиреЗрддрд╛ рд╣реИрдВ: FST (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд) рдФрд░ рдПрдХ Nio ред рдпрджрд┐ рдЫреЛрдЯреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ FST (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд)
рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рдХреНрд░рдордмрджреНрдз рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рд╡рд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрддрдГ, рд╡рди рд╡рд╛рдпреЛ рд╕реЗ рдиреАрдЪ ред рдЕрдиреБрдХреНрд░рдорд┐рдХрд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рддреАрд╕рд░реА рд╕реНрдерд┐рддрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕рдкреВрд░реНрд╡рдХ рдмреАрдПрд╕рдУрдПрди рдореЛрдВрдЧрдбреЙрдм рджреНрд╡рд╛рд░рд╛ рд▓реА рдЧрдИ рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдиреЗрддрд╛рдУрдВ рд╕реЗ рд▓рдЧрднрдЧ рджреЛ рдЧреБрдирд╛ рдЖрдЧреЗ рд╣реИредрд╡рдЬрди
рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдХрд╛рд░ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирджрдВрдб рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ, рдХреНрд░рдорд╛рдВрдХрди / deserialization рдХреА рдЧрддрд┐ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ: рдПрдХ рдорд╛рддреНрд░рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкрд░рд┐рдгрд╛рдо рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рддреЗрдЬрд╝ рд╣реИред рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ "рд╡реЗрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕рдорд╛рди рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ) рд╕реЗ рд▓рд┐рдП рдЧрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╕реЗ рдмрдирддрд╛ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рднреА рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдЕрдиреНрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП)ред рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ, рд╣рдордиреЗ рдбрд┐рдлреНрд▓реЗрдЯ рдХрдореНрдкреНрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ , рдЬреЛ рдХрд┐ рдЬрд┐рдк рдФрд░ рдЧрдЬрд╝рд┐рдк рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред"рддреМрд▓" рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдереЗ:
рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдкрд░рд┐рдгрд╛рдо рджреМрдбрд╝ рдХреЗ рдиреЗрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдХреНрд░рдорд╛рдВрдХрди рдереЗ: рд╡рди рдПрдирдЖрдИрдУ редрдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдореЗрдВ рджреВрд╕рд░рд╛ рд╕реНрдерд╛рди BSON MongoDb рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ (рдЬрд┐рд╕рдиреЗ рджреМрдбрд╝ рдореЗрдВ рддреАрд╕рд░рд╛ рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛)редрдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреАрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░, рдХреНрд░рд┐рдпреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп "рдмрдЪ" рдЧрдпрд╛ , рдЬреЛ рдкрд╣рд▓реЗ рджреМрдбрд╝ рдореЗрдВ рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдерд╛ред"рд╡реЗрдЯрд┐рдВрдЧ" рдХреЗ рдЗрди 3 рдиреЗрддрд╛рдУрдВ рдХреЗ рдХреНрд░рдорд┐рдХ рдкрд░рд┐рдгрд╛рдо рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХреБрдЪрд┐рдд (рд▓рдЧрднрдЧ рджреЛ) рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдирд┐рдХрд▓рд╛: JSON рдХрд╛ рдмрд╛рдЗрдирд░реА рд╕рдорддреБрд▓реНрдп рд╣реИ рд╕реНрдорд╛рдЗрд▓ рдФрд░ JSONредрдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рддрдереНрдп - рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рджреМрд░рд╛рди "рд╡реЗрдЯрд┐рдВрдЧ" рдХреЗ рд╕рднреА рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдХреЛ рдЫреЛрдЯреЗ рдФрд░ рдмрдбрд╝реЗ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рдорд┐рд▓рддреА рд╣реИредрд▓рдЪреАрд▓рд╛рдкрди
рд╡рд┐рдЬреЗрддрд╛ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рдЙрд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛редрдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдиреЗ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП 20 рдорд╛рдирджрдВрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ "рдПрдХ рднреА рдорд╛рдЙрд╕ рдирд╣реАрдВ рдЦрд┐рд╕рдХреЗ"ред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдлреБрдЯрдиреЛрдЯреНрд╕1 LinkedHashMap
.
2 тАФ , тАФ .
3 тАФ , тАФ .
4 sun.reflect.MagicAccessorImpl
тАФ : boxing/unboxing, BigInteger/BigDecimal/String
. MagicAccessorImpl
( ' fork One Nio) тАФ .
5 ArrayList
.
6 ArrayList
HashSet
.
7 HashMap
.
8 тАФ , , /Map-, ( HashMap
).
9 -.
10 One Nio тАФ , ' fork- тАФ .
11 .
UPD: 13 рд╡реАрдВ рдХрд╕реМрдЯреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ Nio (рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП) рдХреЛ рдПрдХ рдФрд░ рдмрд┐рдВрджреБ (19 рд╡рд╛рдВ) рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖредрдпрд╣ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ "рдЖрд╡реЗрджрдХреЛрдВ рдХреА рдкрд░реАрдХреНрд╖рд╛" рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ "рдХрд╛рд╕реНрдЯрд┐рдВрдЧ" рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдЪрд░рдг рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпреЗ рддреБрд▓рдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрд░рдордмрджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдк рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рдереА, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдиреЗрддрд╛рдУрдВ рдиреЗ рджреМрдбрд╝ рдФрд░ рд╡рдЬрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ - рдПрдлрдПрд╕рдЯреА (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд) рдФрд░ рд╡рди рдПрдирдЖрдИрдУ- рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╛рд╣рд░реА рд▓реЛрдЧ рдереЗ ... рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рддрдереНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ: "рд╕реНрдерд╛рдпреА" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдирдЖрдИрдУ (рд╕рдмрд╕реЗ рддреЗрдЬ рдФрд░ рд╕рдмрд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдирд╣реАрдВ) рдиреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрдХ рдмрдирд╛рдП - 19/20ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рддреЗрдЬ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ) рд╡рди рдПрдирдЖрдИрдУ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рд░реНрдп рдХреЛ рд▓рдЪреАрд▓реЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ - рдФрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдерд╛редрдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЬрдм рд╣рдордиреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдПрдХ рдПрдирдЖрдИрдУ (рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП) рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА(*)ред рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рди рдПрдирдЖрдИрдУ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдареАрдХ рд╕реЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рдордп рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рд╡рд╕реНрддреБ рдХреА рдХрдХреНрд╖рд╛ рдХреИрд╕реА рджрд┐рдЦрддреА рдереАред рдпрд╣ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИ рдХрд┐ рд╡рди рдПрдирдЖрдИрдУ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрддрдирд╛ рд▓рдЪреАрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдзрд┐рдХрддрдо рд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ byte[]
редрдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореЗрдЯрд╛-рд╕реВрдЪрдирд╛ (*) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, byte[]
рдЬрд┐рд╕ рдкрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЪрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде ...
one.nio.serial.Serializer<SomeDto> dtoSerializerWithMeta = Repository.get( SomeDto.class );
byte[] dtoMeta = serializeByDefaultOneNioAlgorithm( dtoSerializerWithMeta );
// тДЦ1: dtoMeta тДЦ2
one.nio.serial.Serializer<SomeDto> dtoSerializerWithMeta = deserializeByOneNio( dtoMeta );
Repository.provideSerializer( dtoSerializerWithMeta );
byte[] bytes1 = serializeByDefaultOneNioAlgorithm( object1 );
byte[] bytes2 = serializeByDefaultOneNioAlgorithm( object2 );
...
SomeDto object1 = deserializeByOneNio( bytes1 );
SomeDto object2 = deserializeByOneNio( bytes2 );
...
рдпрджрд┐ рдЖрдк рд╡рд┐рддрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рддреЗрдЬрд╝ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ) рд╡рди рдПрдирдЖрдИрдУ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдХреНрд░рдордмрджреНрдз рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рднреЗрдЬ рд╕рдХреЗрдВрдЧреАред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЬрдм рд╕реЗрд╡рд╛рдПрдВ рдЪрд▓ рд░рд╣реА рд╣реЛрддреА рд╣реИрдВ, рддрдм рдЙрдирдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рдорд╛рдВрдХрди рдкрд░рд┐рдгрд╛рдо рдХреЗ рднреАрддрд░ рдирд┐рд░рдВрддрд░ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ "рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЦреАрдВрдЪреЗрдВ" рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЖрдк One Nio рдХреЗ рд▓рдЪреАрд▓реЗрдкрди (рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдПрдХ Nio рдХреА рдЧрддрд┐ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ!рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЕрдиреБрдХреНрд░рдорд┐рдд рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЬрд╛рд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣ рд╣рдордиреЗ рдЗрд╕ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ рд╣реИ) рд▓рдЪреАрд▓рд╛рдкрди рдореЗрдВ рдПрдХ Nio рд╡рд┐рдЬреЗрддрд╛ (19/20) рдерд╛редрдЬрд╛рд╡рд╛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд░реНрд╕ рдореЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд░реЗрд╕рд┐рдВрдЧ рдФрд░ рд╡реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд░рддреЗ рдереЗ, рдЦрд░рд╛рдм рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ:- BSON MongoDb (14.5 / 20),
- рдХреНрд░рд┐рдпреЛ (13/20)ред
рдХреБрд░рд╕реА
рдкрд┐рдЫрд▓реЗ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ:- рджреМрдбрд╝ рдореЗрдВ, рд░реЗрдЯрд┐рдВрдЧ рдХреА рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ FST (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд) рдФрд░ рдПрдХ Nio рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ BSON MongoDb рдиреЗ рддреАрд╕рд░рд╛ рд╕реНрдерд╛рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ ,
- рдПрдХ рдПрдирдЖрдИрдУ рдиреЗ рд╡реЗрдЯ -рдЗрди рдХреЛ рд╣рд░рд╛рдпрд╛ , рдЙрд╕рдХреЗ рдмрд╛рдж рдмреАрдПрд╕рдУрдПрди рдореЛрдВрдЧрдбреЙрдм рдФрд░ рдХреНрд░рд┐рдпреЛ ,
- рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рддреНрд░ рд╕рдВрджрд░реНрдн рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╡рди Nio рдлрд┐рд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЧрдпрд╛ , рдФрд░ BSON MongoDb рдФрд░ Kryo рдиреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдордЧреНрд░рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╣рдордиреЗ рдЬреЛ рдкрджрдпрд╛рддреНрд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ, рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:- рд╡рди Nio
рдореБрдЦреНрдп рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ - рджреМрдбрд╝ - FST (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд) рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ , рд▓реЗрдХрд┐рди рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рд╡рдЬрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рддрд┐рдпреЛрдЧреА рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рддреМрд▓рд╛ред - FST (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмрд╣реБрдд рддреЗрдЬ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреНрд░рдорд╛рдВрдХрди рд╕реЗ рдЙрддреНрдкрдиреНрди рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред - BSON MongoDB + Kryo
2 3- Java-, . 2- , . Collection
Map
, BSON MongoDB custom- / (Externalizable
..).
Sberbank рдореЗрдВ, рд╣рдорд╛рд░реА рд╕рддреНрд░ рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рдореЗрдВ, рд╣рдордиреЗ One Nio рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ , рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЬрд╛рд╡рд╛ рд╕рддреНрд░ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рддреНрд░ рдкрд░рд┐рд╡рд╣рди рдХреА рдЧрддрд┐ рдХрдИ рдмрд╛рд░ рддреЗрдЬ рд╣реБрдИ рд╣реИред рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ Sberbank Online рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд░реАрдм рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЗ рдХрд╛рд░рдг 40% рддрдХ рддреНрд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдореЗрдВ рдХрдореА, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕рдВрддреБрд╖реНрдЯрд┐ рдХреА рдбрд┐рдЧреНрд░реА рдмрдврд╝ рдЬрд╛рддреА рд╣реИредрдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ Nio рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд╡рд░рдг рдХреЛ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд sun.reflect.MagicAccessorImpl
ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдИрдмреАрдПрдо рдЬреЗрдЖрд░рдИ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬреЗрдЖрд░рдИ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рди рдПрдирдЖрдИрдУ рдХреА рдкреВрд░реНрдг рдХреНрд╖рдорддрд╛ рдЕрднреА рддрдХ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдИ рд╣реИред рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИред