рдЬрд╛рд░реА рд╣реИ,
рдпрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ
рдХрд░реЗрдВ ред
рдкреНрд░рдпреЛрдЧ II: рд╕реВрдЪрдХрд╛рдВрдХ
рдЗрд╕ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ
рдЖрдИрдбреА рдФрд░
рдлреНрд▓реЛрдЯрд╡рд▓реНрдпреВ рдлрд╝реАрд▓реНрдб (рд╣рдордиреЗ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд╣рдордиреЗ рдкреВрд░реНрдг-рдЯреЗрдХреНрд╕реНрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд╣реИ)ред рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдордиреЗ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рд╕реЗ рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
- 10,000 < рдЖрдИрдбреА <100,000
- 200,000 < рдлреНрд▓реЛрдЯрд╡рд▓реНрдпреВ <300,000
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдореНрдорд┐рд▓рди рдХреА рдЧрддрд┐ рдХрд┐рддрдиреА рдЧрд┐рд░ рдЧрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MongoDB рдФрд░ POstgreSQL рдореЗрдВ рдЕрдиреНрдп 250,000 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВред
MongoDBInsert 250000 records complete! Total time: 69.453 sec
PostgreSQL psql -d prefTest -f 250k.p5.sql (Total time: 466.153 sec)
рд╕рд░рд▓ рдЧрдгрдирд╛рдУрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ MongoDB рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рдиреЗрддрд╛ рдмрдиреЗ рд░рд╣реЗ: рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджрд░ рдХреЗрд╡рд▓
10% рддрдХ рдЧрд┐рд░ рдЧрдИ рдФрд░
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 3600 рд╡рд╕реНрддреБрдУрдВ рдХреА рд░рд╛рд╢рд┐ рд╣реБрдИред рдЬрдмрдХрд┐ PostgreSQL рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЧрддрд┐
~ 30% рд╕реЗ рдЧрд┐рд░рдХрд░ рд▓рдЧрднрдЧ
536 рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣реЛ рдЧрдИ ред
рдореИрдВ рдирдореВрдирд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ:
MongoDBdb.tmp.find({$and:[{id:{$gt:10000}},{id:{$lt:100000}}]})
db.tmp.find({$and:[{floatvalue: {$lt:300000}},{floatvalue: {$gt:200000}}]})
PostgreSQLselect * from tmp where id>10000 and id<100000
select * from tmp where floatvalue<300000 and floatvalue>200000
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирдореВрдирд╛ рд╕реНрдерд┐рддрд┐ PostgreSQL рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрджрд▓ рдЧрдИ:

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрдм рдирдореВрдирд╛ рд╕реАрдорд╛ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ (
floatvalue=1234567.76545
) рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдбреАрдмреАрдПрдордПрд╕ рдиреЗ 0 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдпрд╣рд╛рдВ рднреА рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдпреЛрдЬрд┐рдд рдирдореВрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдмреБрджреНрдзрд┐рдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣рд╛рдБ, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдФрд░ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдФрд░ рд░рд╣рд╕реНрдпреЛрджреНрдШрд╛рдЯрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, MongoDB рдЗрддрдиреА рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рд╕реАрдкреАрдпреВ рдХреА рдЦрдкрдд рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ (рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЦреЛрдЬ рдХрд░рдиреЗ рдкрд░
1-2-40 рдмрдирд╛рдо 30-40% рддрдХ) рдХрд┐ рдпрд╣ рдЗрд╕рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рд╕реЗ рднреА рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ (
4-14% рдмрдирд╛рдо 5-25 рддрдХ рдХреА рдХрдореА)
% ) рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдХреБрдЫ рдХреЛ рд╕рдореЗрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░рд┐рдгрд╛рдореА рдкреНрд▓реЗрдЯ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдЖрд░реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ:



рдФрд░ рдЕрдм рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рддреБрд░рдВрдд PostgreSQL рдкрд░ MongoDB рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рдореНрдорд┐рд▓рди рдХреА рдЧрддрд┐ ред рдпрд╣ рд▓рдЧрднрдЧ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдФрд░ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдЙрдЪреНрдЪ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдПрдХ рдЖрджреЗрд╢ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕реЗ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (PostgreSQL рдореЗрдВ
30% рдХреА рдХрдореА рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЗрд╡рд▓
~ 10% )ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реИ! рд▓реЗрдХрд┐рди ... рдЖрдк
рдХрд┐рддрдиреА рдмрд╛рд░ рдЪрдпрди (рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдбрд╛рд▓рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?рдЬрдм рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓рд╛рдиреЗ, MongoDB рднреА рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ! рд▓реЗрдХрд┐рди ...
рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрдк рдЕрдиреБрдХреНрд░рдорд┐рдд рдмрд┐рдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?рдРрд╕рд╛ рдордд рд╕реЛрдЪреЛ рдХрд┐ рдореЗрд░реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде рдореИрдВ рддреБрдореНрд╣реЗрдВ noSQL DBMS рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдмрд┐рдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдореЗрд░рд╛ рдорддрд▓рдм рдкреНрд░рд╛рдердорд┐рдХ рдирд╣реАрдВ рд╣реИ) рдЗрди рдпрд╛ рдЙрди рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рд╣реИред рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд┐рд▓рди рдЧрддрд┐ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рднреА рдмрд╣реБрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрднреА-рдХрднреА рдорд╛рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ
рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдареЛрд╕? рдпрд╣ (рдмрд╣реБрдд рд╣реА рд╕рддрд╣реА) рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдирд╣реАрдВ рдЫрд┐рдкрд╛рдКрдВрдЧрд╛, рдмрд▓реНрдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╢реНрди "SQL рдпрд╛ noSQL рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реИ?"ред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ, рдЬрд░реВрд░рддреЛрдВ рдФрд░ рдЕрд╡рд╕рд░реЛрдВ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ рдХрд┐ рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рд▓рдХреНрд╖реНрдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред