рдореИрдВрдиреЗ рдФрджреНрдпреЛрдЧрд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ db4o рдХреЛ рдХреИрд╕реЗ рдордирд╛ рдХрд┐рдпрд╛

рдЫрд╡рд┐


рд╣рдо рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рд╡рд╛ рдПрд╕рдИ / рдПрдордПрд╕ SQL тАЛтАЛ/ db4o рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрдбрд╝реА рдХрдВрдкрдиреА рд╡рд┐рднрд╛рдЧ рд╣реИрдВред рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдФрджреНрдпреЛрдЧрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ db4o рдПрдХ рдЧрдгрдирд╛ рдмреНрд░реЗрдХ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдореИрдВ db4o рд╕реЗ рдЖрдзреБрдирд┐рдХ noSQL рддрдХрдиреАрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдореВрд▓ рдпреЛрдЬрдирд╛ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдЪрд▓реА рдЧрдИ - db4o рдХреЛ рдордирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордЭреМрддрд╛ рдХреА рдХреАрдордд рдкрд░ред рдмрд┐рд▓реНрд▓реА рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рддрд╣рддред


рдХреНрдпрд╛ db4o рддрдХрдиреАрдХ рдореГрдд рд╣реИ?


Habr├й рдкрд░ db4o рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреНрд░рдХрд╛рд╢рди рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рдП рд╣реИрдВред Stackoverflow рдкрд░, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╡рд╢рд┐рд╖реНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рдПрдХ рдкреБрд░рд╛рдиреЗ рдкреНрд░рд╢реНрди рдкрд░ рдПрдХ рддрд╛рдЬрд╛ рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рдПрдХ рддрд╛рдЬрд╛ рдЕрдиреБрддреНрддрд░рд┐рдд рдкреНрд░рд╢реНрди рдХреА рддрд░рд╣ рд╣реИ ред рд╡рд┐рдХреА рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 2011 рдХреА рддрд╛рд░реАрдЦ рд╣реИред


рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдзрд╛рд░рдгрд╛ рдмрдирд╛рддрд╛ рд╣реИ: рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреБрд╖реНрдЯрд┐ рднреА рдереА: рдПрдХреНрдЯрд┐рдпрди рдиреЗ рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ db4o рдЙрддреНрдкрд╛рдж рдХреА рдкреЗрд╢рдХрд╢ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдмрдврд╝рд╛рд╡рд╛ рдирд╣реАрдВ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


Db4o рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЧрдИ


рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЖрд▓реЗрдЦ рдкрд░рд┐рдЪрдп db4o рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХреА рдкреВрд░реНрдг рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред рдЖрдк рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ


User user1 = new User("Vasya", "123456", 25); 

рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ


 db.Store(user1) 

рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ Query.execute () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрд╣ рд░рд┐рд▓реЗрд╢рдирд▓ рдЯреЗрдмрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛, рд╕рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдСрдбрд┐рдЯ рдЯреНрд░реЗрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред рдлрд┐рд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдереЗ, рдФрд░ рдЖрдЬ рдХреА рдЧрдгрдирд╛ рдХреЗ рдЕрдВрдд рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдХрд▓ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ред рд╕рдм рдХреБрдЫ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рдерд╛ - рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рд░рд╛рдд рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдкрд░реЛрд╕рд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ db4o рдлрд╛рдЗрд▓ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рджрд┐рди рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ "рд╣рдордиреЗ рд╕рднреА рдбреЗрдЯрд╛ рд╕рдмрдорд┐рдЯ рдХрд┐рдП, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдХреБрдЫ рднреА рдСрд░реНрдбрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред"


рд╕рдордп рдХреЗ рд╕рд╛рде, рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдЙрдбрд╝рд╛рди рднрд░реА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдПрдХ db4o рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдХрдард┐рди рдкреНрд░рд╢реНрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╡реНрдпрд╕реНрдд рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреА рднреАрдбрд╝ рд╣реИ, рдЬреЛ рдСрд░реНрдбрд░ рд▓реЙрдЬрд┐рдХ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рд▓реИрд╕ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рджреГрд╢реНрдпрдорд╛рди рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЬрд▓реНрдж рд╣реА db4o рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкреЗрд░реЗрдЯреЛ рдХреА рддрд░рд╣ - рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдореБрдЦреНрдп рднрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рдпреБрджреНрдз рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ, рдЗрддрд┐рд╣рд╛рд╕ рдлрд╝рд╛рдЗрд▓ ~ 35 рдЬреАрдмреА / рджрд┐рди рд▓реЗрддреА рд╣реИ, рдЙрддрд░рд╛рдИ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯрд╛ рд▓рдЧрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (1:10) рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ com.db4o.ObjectContainer рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрдкреАрдбрд╝рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред CentOS рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ, com.db4o.query.Query рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦ / рдкрдврд╝рддрд╛ рд╣реИред рдЧрддрд┐ рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИред


рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдпреЛрдЬрдирд╛рдмрджреНрдз рдЖрд░реЗрдЦ


рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕реВрдЪрдирд╛ рдореЙрдбрд▓ рдП, рдмреА, рд╕реА рдФрд░ рдбреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИред рдкрджрд╛рдиреБрдХреНрд░рдо рдПрдХ рдкреЗрдбрд╝ рдирд╣реАрдВ рд╣реИ, рд▓рд┐рдВрдХ рд╕реА 1 -> рдмреА 1 рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред


 ROOT || | ==>A1 | || | | ==> B1 <------ | | || | | | | ======> C1 | | | | | | | ===> C1.$D | | =======> C2 | | | | ==> B2 ==> C2.$D | | ===>A2 =======> C3 | | ==> B3 ===> C3.$D | ======> C4 | ===> C4.$D 

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ (GUI) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ com.sun.net.httpserver.HttpsServer, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ XML рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ, рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрддрд░ рдХреЛ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рд╕реНрддрд░ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ GUI рд╕рд░реНрд╡рд░ рдХреЛ XML-рд▓рд┐рдкрдЯреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рднреЗрдЬрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП db4o рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд▓рд╕ рдЙрди рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдирд┐рдХрд╛рд▓реЗ рдЧрдП рд╕реНрддрд░ рдХреА XML рдкреНрд░рд╕реНрддреБрддрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред


рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдХреИрди рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ db40 рд╕рднреА рдмрд╛рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд╣рд░рд╛рдИ рддрдХ рдкрдврд╝рддрд╛ рд╣реИ, рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдмрдбрд╝реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп conf.common () рдХреЗ рд╕рд╛рде рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлреВ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдХреНрд░рд┐рдпрдг рдЧрд╣рд░рд╛рдИ рд╕реЗрдЯ рдХрд░рдХреЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ObjectClass (Foo.class) .maximumActivationDepth (1)ред


рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ $ 0 рд╕рдВрд▓рдЧреНрдирдХ рд╡рд░реНрдЧ рдХреЛ рдирд┐рд╣рд┐рдд рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред Db4o рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдФрд░ рдРрд╕реЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ (рд▓реЗрдХрд┐рди рдзреАрд░реЗ-рдзреАрд░реЗ) рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред


0. рдЖрдЗрдбрд┐рдпрд╛


рдЗрд╕рд▓рд┐рдП, db4o рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рд╢рд╛рд╕рди рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрдиреЗ рдкрд░ рдЙрдирдХреЗ рдЪреЗрд╣рд░реЗ рдкрд░ рдПрдХ рдЕрдЬреАрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдзреАрдорд╛ рд╣реИ, рддрдХрдиреАрдХ рдмрд╣реБрдд рдЬреАрд╡рдВрдд рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдп: db4o рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрддрдорд╛рди NoSQL рддрдХрдиреАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ + MongoDB рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдиреЗ рдореЗрд░реА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ред


1. рд▓рд▓рд╛рдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг


рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ org.springframework.data.mongodb.core.MongoOperations рдФрд░ save () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ com.db4o.ObjectContainer.db.Store (user1) рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред MongoDB рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рд╡рд╣рд╛рдБ рднреА @ DBRef рдПрдиреЛрдЯреЗрд╢рди рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ 3NF рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВред


1.1ред рдЙрддрд░рд╛рдИред рдореБрдЦреНрдп рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░


рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкреАрдУрдЬреЗрдУ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдЗрди рд╕рднреА рдирдИ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ <POJO, POJO> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдЦрд┐рдд рддрд░реНрдХ рд╣реИред рдореИрдВ рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ


 org.springframework.data.mapping.MappingException: Cannot use a complex object as a key value. 

рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░, рдХреЗрд╡рд▓ 2011 рдХрд╛ рдкрддреНрд░рд╛рдЪрд╛рд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдЬрд┐рд╕рдореЗрдВ рдЧреИрд░-рдорд╛рдирдХ рдореИрдкрд┐рдВрдЧрдореЙрдиреНрдЧрдХреЙрдиреНрдХреЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ред рдЕрднреА рддрдХ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП @ рдХреНрд╖рдгрд┐рдХ, рдореИрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдБред рдпрд╣ рдирддреАрдЬреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ, рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ред


рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрдЪрдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕рд╣реЗрдЬреЗ рдЧрдП рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ @DBRef рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛рдлреА рдмрдбрд╝реЗ рдФрд░ рдмреНрд░рд╛рдВрдХреНрдб рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рддреЛ MongoOperations рд╕рднреА (рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛) рдЧреИрд░-рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдВрд▓рдЧреНрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред


1.2ред рдЙрддрд░рд╛рдИред рдирд╛рдорд┐рдд рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд╕рд░рдгреА?


рд╕рд┐рд╕реНрдЯрдо рдореЙрдбрд▓ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рд╕ рд╕реА рдореЗрдВ рдПрдХ рд╣реА рдХреНрд▓рд╛рд╕ рдбреА рдХрд╛ рд╕рдВрджрд░реНрдн рдХрдИ рдмрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ DefaultMode рдлрд╝реАрд▓реНрдб рдореЗрдВ рдФрд░ ArrayList рдореЗрдВ рдЕрдиреНрдп рд▓рд┐рдВрдХ рдХреЗ рдмреАрдЪ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣

 public class C { private D defaultMode; private List<D> listOfD = new ArrayList<D>(); public class D { .. } public C(){ this.defaultMode = new D(); listOfD.add(defaultMode); } } 

рдЙрддрд╛рд░рдиреЗ рдХреЗ рдмрд╛рдж, JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЗрд╕рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рд╕реЗ рд╕рдВрд▓рдЧреНрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЕрдирд╛рдо рддрддреНрд╡ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдирд╛рдо рд╕реЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ - рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдХреЗ рдирд╛рдо рд╕реЗред рдЖрдк рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ MongoDB рд╕рдВрдЧреНрд░рд╣ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдФрд░ MongoDB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ, рддреЛ рдЖрдк ArrayList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдореИрдВрдиреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рджреЗрдЦрд╛ред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАрдВ, BI рдХреЗ рд▓рд┐рдП MongoDB рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ред


1.3ред рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рддрд░реНрдХ


рдореИрдВ MongoOperations.findOne () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ


 "No property name found on entity class A to bind constructor parameter to!" 

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ corNName рдлрд╝реАрд▓реНрдб рд╣реИ, рдФрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдФрд░ рдЗрд╕ .orpName = рдирд╛рдо рдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдирд┐рдХрд╛рдп рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред MongoOperations рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реЛрдВред рдпрджрд┐ рдХрдИ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ @PersistenceConstructor рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рдЦреЗрддреЛрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд╛рдо рд▓рд╛рддрд╛ рд╣реВрдВред


1.4ред рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред $ D рдФрд░ рдЗрд╕ $ 0 рдХреЗ рд╕рд╛рде


рдЗрдирд░ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕ рдбреА, рдХреНрд▓рд╛рд╕ рд╕реА рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рд╕ рд╕реА рд╕реЗ рдЕрд▓рдЧ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред D рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг C рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - D рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП C рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИред рд╡рд░реНрдЧ D рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВ рдЬреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдбреА рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рдиреЗрд╕реНрдЯреЗрдб рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо рдЕрдирд╛рдо рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ , рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рд╕рдВрд▓рдЧреНрди рд╡рд░реНрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдПрдХ рдирд┐рд╣рд┐рдд рд╕рдВрджрд░реНрдн рд╣реИред рдЕрд░реНрдерд╛рддреН, CD рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ $ 0 рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ C рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдлрд┐рд░ рд╕реЗ рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ


 "No property this$0 found on entity class $D to bind constructor parameter to!" 

рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдбреА рдХреЗ рддрд░реАрдХреЗ C.this.fieldOfClassC рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдкреВрд░реА рддрд╛рдХрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрдХреНрд╖рд╛ рдбреА рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реА рдХреЛ рддрддреНрдХрд╛рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣реА рд╣реИ, рдореБрдЭреЗ MongoOperations рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ D рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ C рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


рд╢рд╛рдпрдж рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдирд╛? рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛, рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдПрдХ рд╡рд╛рд╣ рдХрд╛рд░реНрдп рд╣реИ ...


2. 3NF / @ DBRef рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг


рдореИрдВ рджреВрд╕рд░реА рддрд░рдл рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдкрдиреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ 3NF рдХреА рднрд╛рд╡рдирд╛ рд╕реЗ рд╕рдВрдмрдВрдз рдмрдирд╛рддрд╛ рд╣реВрдВред


2.1ред рдЙрддрд░рд╛рдИред @DBRef рдЦреВрдмрд╕реВрд░рдд рд╣реИ


рдХреНрд▓рд╛рд╕ рд╕реА рдореЗрдВ рдбреА рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдЧрд░ рдбрд┐рдлреЙрд▓реНрдЯрдореЛрдб рдФрд░ рдПрд░рд┐рдпрд░ рд▓рд┐рд╕реНрдЯ рд▓рд┐рдВрдХ рдХреЛ @ рдбреАрдмреАрдЖрд░рдПрдл рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЖрдХрд╛рд░ рдШрдЯ рдЬрд╛рдПрдЧрд╛, рд╡рд┐рд╢рд╛рд▓ рд╕рдВрд▓рдЧреНрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдиреАрдЯ рд▓рд┐рдВрдХ рд╣реЛрдВрдЧреЗред рдлреАрд▓реНрдб рд╕реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╕реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ

 "defaultMode" : DBRef("D", ObjectId("5c496eed2c9c212614bb8176")) 

MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдбреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реЛрддрд╛ рд╣реИ


 "_id" : ObjectId("5c496eed2c9c212614bb8176") 

рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реБрдВрджрд░ рд╣реИред


2.2ред рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреНрд▓рд╛рд╕ рдбреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░


рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, C рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдбреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рд▓рд┐рдВрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:


 private D defaultMode; private ArrayList<D> listOfD; for (D currentD: listOfD){ if (currentD == defaultMode) continue; doSomething(currentD); } 

рдореИрдВ findOne рдХрд╣рддрд╛ рд╣реВрдВ (), рдореИрдВ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рд╕реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ MongoOperations рдПрдХ json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ @DBRef рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ рдЕрдЬреАрдм рдирд┐рд░реНрдорд╛рдг рдорд┐рд▓рддрд╛ рд╣реИ - рдбрд┐рдлреЙрд▓реНрдЯрдореЛрдб рдлреАрд▓реНрдб рдореЗрдВ рдбреА рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдФрд░ рд▓рд┐рд╕реНрдЯрдСрдлрдбреА рд╕рд░рдгреА рдореЗрдВ, рдЬрд╣рд╛рдВ рд▓рд┐рдВрдХ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рдореБрджрд╛рдп рд╕реЗ рд╕реАрдЦрдирд╛: "рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдордВрдЧреЗрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред" рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рдПрдХ рд╣реА рдирд╕ рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ : рдЕрд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЬрд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рднреАрддрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, DBRefs рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд╣реЛрдЧрд╛, рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╡реЗрд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рддрд╛ рд╣реИ: "рдореЛрдВрдЧреЛрдмреАрдбреА рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЬрд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╖реНрдЯрддрдо рд╣реЛрдЧрд╛ред" рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рд╣реИ?


рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд╕рд╛рде рдлрд╝реЛрдХрд╕ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреАрдмреАрдПрдордПрд╕ рдХреА рддрд░рд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдкрд╕рдВрдж рд╣реИ:


  • рдпрджрд┐ рдЖрдк @DBRef рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
    • рдкреНрд░рддреНрдпреЗрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдИ рд╕рдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
    • MongoOperations рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдвреВрдВрдвреЗрдВрдЧреЗ рдФрд░ рдкрдврд╝реЗрдВрдЧреЗред рд╡рд╣рд╛рдБ ObjectId рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдПрдХ (рдмрдбрд╝реЗ) рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрдИ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкрдврд╝рдирд╛;
  • рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдЕрд╕рд╛рдорд╛рдиреНрдп" рдЬреМрди рдЙрд╕реА рдбреЗрдЯрд╛ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ: рдЖрдк @ рдбреАрдмреАрдЖрд░рдПрдл рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднрд░рдирд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗ рдмрдЬрд╛рдп


 "defaultMode" : DBRef("D", ObjectId("5c496eed2c9c212614bb8176")) 

json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ


 "defaultMode" : ObjectId("5c496eed2c9c212614bb8176") 

рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдЧреА - рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MongoOperations рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдФрд░ ObjectId рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдПрдХ рдЕрд▓рдЧ (рдЖрд▓рд╕реА) рдЕрдиреБрд░реЛрдз рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХрд▓ рдХреНрд╡реЗрд░реА рдХреЛ рдкрд░рд┐рдгрд╛рдо рдЬрд▓реНрджреА рд╕реЗ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ObjectId рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


2.3ред рддреЛ рдЕрдм рдХреНрдпрд╛?


рд╕рдмрдЯреЛрдЯрд▓ред MongoDB рдкрд░ db4o рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛:


  • рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА - рдореВрд▓реНрдп рд╕реВрдЪреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯрдо POJO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП;
  • рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдкрд┐рдВрдЧрдореЛрдВрдЧреЛрдСрдирдХрд░реНрдЯрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ;
  • рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ DBRef рдХреЗ рдмрд┐рдирд╛ "рдЧреИрд░-рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдЖрдк рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк MappingMongoConverter рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдореМрдЬреВрджрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ / рдлрд╝реАрд▓реНрдб / рд╕реВрдЪреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХрдИ рд╕рд╛рд▓ рд╣реИрдВ - рдПрдХ рдХрдордЬреЛрд░ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрднреА рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реИред


рд╕рдордЭреМрддрд╛ рд╕рдорд╛рдзрд╛рди: рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрдВрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред


3. рддреАрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕, рдкрд╣рд▓реЗ рджреЛ рдХрд╛ рдЕрдиреБрднрд╡


рдкреЗрд░реЗрдЯреЛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдкреВрд░реЗ рдХрд╛рд░реНрдп рдХреА рд╕рдлрд▓рддрд╛ рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ: рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ db4o рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЧрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрдЧрд╛ред рдПрдХ рдУрд░, рдпрд╣ рдмреБрд░рд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЧрд┐рдЯ рдореЗрдВ рд╕рднреА рд▓рдбрд╝рд╛рдХреВ рдкреНрд░рд╕рд╡ рдЯреИрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЧрд▓рддреА рдХреЛ рд╕рд╣рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд░ рдмрд╛рд░ рдЙрддрд╛рд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рд╕реНрдЯрдо рдЧрдгрдирд╛ рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреНрд░рдорд╛рдВрдХрди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рд╕реНрдЯрдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЧрдгрдирд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


3.1ред рдХрд╕реНрдЯрдо рдкреНрд░рд╕реНрддреБрддрд┐ рдбреЗрдЯрд╛


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрддрд░реЛрдВ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджрд░реНрд╢рдХ рд╡рд░реНрдЧ рд╣реИред Viewer.getXML () рд╡рд┐рдзрд┐ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рдЗрд╕рдореЗрдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдирд┐рдХрд╛рд▓рддреА рд╣реИ рдФрд░ XML рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред


рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЖрдЬ рдХреА рдЧрдгрдирд╛ рдХрд╛ рд╕реНрддрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ, рддреЛ рд╕реНрддрд░ рд░реИрдо рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рдЕрддреАрдд рд╕реЗ рдПрдХ рдЧрдгрдирд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, com.db4o.query.Query.execute () рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрддрд░ рдвреВрдВрдвреЗрдЧреАред рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрддрд░ рдХреЗрд╡рд▓ рдмрдирд╛рдП рдЧрдП рд╕реНрддрд░ рд╕реЗ рд▓рдЧрднрдЧ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡реНрдпреВрдЕрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред


рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЧрдгрдирд╛ рд╕реНрддрд░ рдФрд░ рдЗрд╕рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ - рдкреНрд░рд╕реНрддреБрддрд┐ рд░реВрдкрд░реЗрдЦрд╛ (рдлрд╝реНрд░реЗрдо) рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╕реНрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдкрд▓рдмреНрдз XML рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рдВрдмреА рд╣реЛ рдЬрд╛рдПрдЧреА, рд╣рд░ рдмрд╛рд░ рдПрдХ рдлреНрд░реЗрдо рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдФрд░ рдлрд╝реНрд░реЗрдо XML рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛:


  : < > -> Viewer.getXML() : < > -> Viewer.getFrame() -> Frame.getXML() 

рдХрд╣рд╛рдиреА рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рдлреНрд░реЗрдо рдмрдирд╛рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


3.2ред рдЙрддрд░рд╛рдИ


рдХрд╛рд░реНрдп рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред XML рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП, рдлреНрд░реЗрдо рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯреЗрдЧрд░ рдФрд░ рдбрдмрд▓ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдлрд╝реНрд░реЗрдо рдЕрдкрдиреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рд╕реЗ рдЧреЗрдЯрдПрдХреНрд╕рдПрдордПрд▓ () рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИред MongoOperations рдиреЗ рдлреНрд░реЗрдо рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрд╡рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдкреНрд░рдЧрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирдП рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдкреВрдЫреЗред


рдЕрдВрдд рдореЗрдВ, рд╕рдм рдХреБрдЫ рджреВрд░ рд▓реЗ рдЧрдпрд╛! рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ WiredTiger рдЗрдВрдЬрди MongoDB рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдкреНрд░рддрд┐ рджрд┐рди ~ 3.5 GB рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред Db4o рдкрд░ рдПрдХ рджрд╕ рдЧреБрдирд╛ рдХрдореА рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ рдХреЗ рдкреЗрдбрд╝, MongoOperations.save () рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯреНрд░рд╛рд╡реЗрд▓ред рдЗрд╕ рддрд░рд╣ рдХреА рдЙрддрд░рд╛рдИ рдореЗрдВ 5.5 рдШрдВрдЯреЗ рд▓рдЧреЗ, рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореИрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ: рд╕реНрддрд░ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реНрддрд░реЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ Callable.call () рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рддрд╛ рд╣реВрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕рднреА ExecutorService.invokeAll () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВред


MongoOperations рдиреЗ рдлрд┐рд░ рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдкреВрдЫрд╛ рдФрд░ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдХреЗ рд╕рд╛рде рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП, рдкреИрдХреЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ред 1000 рд╕реНрддрд░реЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ 15 рдорд┐рдирдЯ рдирд┐рдХрд▓рд╛ред


3.3ред рдореЛрдВрдЧреЛ рдмреАрдЖрдИ рдХрдиреЗрдХреНрдЯрд░, рдпрд╛ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


MongoDB рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдмрдбрд╝реА рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдореИрдВрдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ред рдХрдВрд╕реЛрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ , рдЖрдк рд╕реБрдВрджрд░ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐рдЬрд╛рдЗрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкрдХреНрд╖ рд╣реИред рджреВрд╕рд░реЗ рдкрд░, рдореИрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╕рд╛рдереА рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЗ рдЕрдЪреНрдЫреЗ рдЖрдзреЗ рджрд┐рдорд╛рдЧ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ


 db.users.find( { numbers: { $in: [ 390, 754, 454 ] } } ); 

рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рдмрдЬрд╛рдп


 SELECT * FROM users WHERE numbers IN (390, 754, 454) 

BI рдХреЗ рд▓рд┐рдП MongoDB рдХрдиреЗрдХреНрдЯрд░ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рд╕рд╛рд░рдгреАрдмрджреНрдз рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд╕рд╛рд░рдгреАрдмрджреНрдз рд░реВрдк рдореЗрдВ рдлрд╝реАрд▓реНрдб / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ .drdl рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдпрдорд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рдВрдмрдВрдзрдкрд░рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЗрдирдкреБрдЯ рдкрд░ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмреАрдЪ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


3.4ред рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ


рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ MongoDB рдХреЗ рд▓рд┐рдП рдЦреБрдж рдПрдХ рд╕рд░рдгреА рдФрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рд╕рд░рдгреА рдПрдХ рдирд╛рдорд┐рдд рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ; рдореИрдВ рднреА рд╕рдорд╛рдкреНрдд рдлреНрд░реЗрдо рд╡рд░реНрдЧ refactor рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдХрд┐рд╕реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред


рдпрджрд┐ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╛рдорд┐рдд рдлрд╝реАрд▓реНрдбреЛрдВ рдХрд╛ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдлрд╝реАрд▓реНрдб рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд░реВрдЯ рд╕реЗ рдПрдХ рдЕрд╡рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП xyред рдпрджрд┐ рдкрддреНрд░рд╛рдЪрд╛рд░ xy => рдлрд╝реАрд▓реНрдбрдПрдХреНрд╕рд╡рд╛рдИ DRDD рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВред рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ред рдпрджрд┐ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреЛрдИ xy рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ NULL рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрдЧрдд рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрдЧрд╛ред


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬрд┐рд╕реЗ рдлреНрд░реЗрдореНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣ A рд╣реИ, рдФрд░ MongoOperations рдиреЗ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрдХреНрд╖рд╛ A рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦреЗ рд╣реИрдВред рдпреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ: рдкрд╣рд▓рд╛


 { "_id": ObjectId("5cdd51e2394faf88a01bd456"), "x": { "y": "xy string value 1"}, "days": [{ "k": "0", "v": 0.0 }, { "k": "1", "v": 0.1 }], "_class": "A" } 

рдФрд░ рджреВрд╕рд░рд╛ (ObjectId рдЕрдВрддрд┐рдо рдЕрдВрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ):


 { "_id": ObjectId("5cdd51e2394faf88a01bd457"), "x": { "y": "xy string value 2"}, "days": [{ "k": "0", "v": 0.3 }, { "k": "1", "v": 0.4 }], "_class": "A" } 

рдмреАрдЖрдИ рдХрдиреЗрдХреНрдЯрд░, рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд░рдгреА рд╕реЗ [1] .v рдХреНрд╖реЗрддреНрд░ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрдиреЗрдХреНрдЯрд░ $ рдЦреЛрд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдиреЛрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓ рдПрдХ рд╕реЗ рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЯреЗрдмрд▓ рдЯреЗрдмрд▓рдП рдХреЛ рд╕рдВрдЧреНрд░рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рджрд┐рди рд╕рд░рдгреА рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓рдПрдбреЗред .Drdl рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:


 schema: - db: Frames tables: - table: tableA collection: A pipeline: [] columns: - Name: _id MongoType: bson.ObjectId SqlName: _id SqlType: objectid - Name: xy MongoType: string SqlName: fieldXY SqlType: varchar - table: tableA_days collection: A pipeline: - $unwind: path: $days columns: - Name: _id #   MongoType: bson.ObjectId SqlName: tableA_id SqlType: objectid - Name: days.k MongoType: string SqlName: tableA_dayNo SqlType: varchar - Name: days.v MongoType: string SqlName: tableA_dayVal SqlType: varchar 

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреА: рдЯреЗрдмрд▓ рдЯреЗрдмрд▓рдП


_ idfieldXY
5cdd51e2394faf88a01bd456xy рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рез
5cdd51e2394faf88a01bd457xy рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди реи

рдФрд░ рддрд╛рд▓рд┐рдХрд╛ tableA_days


tableA_idtableA_dayNotableA_dayVal
5cdd51e2394faf88a01bd45600.0
5cdd51e2394faf88a01bd45610.1
5cdd51e2394faf88a01bd45700.3
5cdd51e2394faf88a01bd45710.4

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдореВрд▓ рд╕реВрддреНрд░реАрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛; рдЖрдк рд╕рд┐рд░реНрдл db4o рдХреЛ MongoDB рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред MongoOperations db4o рдЬреИрд╕реА рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рд╢рд╛рдпрдж рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢реНрд░рдо рд▓рд╛рдЧрдд db4o рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕реНрдЯреЛрд░ / рдХреНрд╡реЗрд░реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд▓рдиреАрдп рдирд╣реАрдВ рд╣реЛрдЧреАред


рдСрдбрд┐рдЯ рдЯреНрд░реЗрд▓ред Db4o рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рд╣реИред рдЖрдк рдмрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдФрд░ рдЯреЗрдмрд▓ рдирд╣реАрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм: рдпрджрд┐ рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдП рдФрд░ рдмреА рдХреЗ рдмреАрдЪ рд╡рд░реНрдЧ рдИ рдЬреЛрдбрд╝реЗрдВ), рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдардиреАрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХреЛрдИ рдмрдбрд╝рд╛ рд╕рдВрдЪрд┐рдд рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИред


рдЬрдм MongoOperations рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрднрд╡ рдерд╛, рддреЛ рдЕрдкрд▓реЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИред рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рд╕реЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рднреА рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi461417/


All Articles