MongoDB рдмрдирд╛рдо PostgreSQL рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛ред рднрд╛рдЧ I: рдХреЛрдИ рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ

рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, noSQL MongoDB DBMS рдХреА рдмрдврд╝рддреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ PostgreSQL рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ рдХрд┐ рдХреБрдЦреНрдпрд╛рдд рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╕


рдирд┐рдореНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЯреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП:

рд╕реАрдкреАрдпреВ: 4GHz 2GHz рдкрд░
рд░реИрдо: 2 рдЬреАрдмреА
рдУрдПрд╕: рд╕реЗрдВрдЯреЛрд╕ 6.4

MongoDB

рд╕рдВрд╕реНрдХрд░рдг: 2.4.3

рд╡рд┐рдиреНрдпрд╛рд╕:

logpath=/xxx/mongod.log logappend=true fork = true dbpath=/xxx/mongo pidfilepath = /xxx/mongod.pid 


рдорд╛рдирдЧреЛрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдкреИрд░рд╛рдореАрдЯрд░:

 OPTIONS=" -f $CONFIGFILE" 


PostgreSQL:

рд╕рдВрд╕реНрдХрд░рдг: 8.4.13

рд╡рд┐рдиреНрдпрд╛рд╕:

 shared_buffers = 1GB max_prepared_transactions = 0 work_mem = 64MB maintenance_work_mem = 512MB effective_cache_size = 512MB 


рд╡рд┐рд╖рдп


рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧреНрд░рд╣ (рдФрд░ рдкреЛрд╕реНрдЯрд░реЗрдХреНрдпреВрдПрд▓ рдХреЗ рд▓рд┐рдП - рддрд╛рд▓рд┐рдХрд╛) рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдареАрдХ 1 000 000 рд░рд┐рдХреЙрд░реНрдбред рд░рд┐рдХреЙрд░реНрдб рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо MongoDB рдХреЗ рд▓рд┐рдП PostreSQL рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдерд╛ред рдЗрд╕реЗ "рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛" рдХреЗ рдХрд░реАрдм рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореМрдХрд╛ рдХрд╛ рдПрдХ рддрддреНрд╡ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд░реАрдХреНрд╖рдг рд╡рд╕реНрддреБ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдереА:



рд╕рдореНрдорд┐рд▓рди рд╕рдордп рдХреЛ рдФрд╕рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓рд╛рдЦ рд░рд┐рдХреЙрд░реНрдб рдХреЛ 250,000 рд░рд┐рдХреЙрд░реНрдб рдХреЗ 4 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдХреЛрдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рдореНрдорд┐рд▓рди рд╕рдордп рдХреЗ рдорд╛рдкреЛрдВ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдП:

MongoDB

(рдиреЗрдЯрд┐рд╡ рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реГрдЬрди рд╕рдордп рдХреБрд▓ рд╕рдореНрдорд┐рд▓рди рд╕рдордп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ)

 Insert 250 000 records complete! Total time: 62.788 sec Insert 250 000 records complete! Total time: 62.481 sec Insert 250 000 records complete! Total time: 62.916 sec Insert 250 000 records complete! Total time: 61.565 sec Average time: 62.4375 sec 


PostgreSQL

(PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реГрдЬрди рд╕рдордп рдХреБрд▓ рд╕рдореНрдорд┐рд▓рди рд╕рдордп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ )

 psql -d prefTest -f 250k.p1.sql (Total time: 326.377 sec) psql -d prefTest -f 250k.p2.sql (Total time: 326.646 sec) psql -d prefTest -f 250k.p3.sql (Total time: 327.726 sec) psql -d prefTest -f 250k.p4.sql (Total time: 327.039 sec) Average time: 326.947 sec 


рдкреНрд░рдпреЛрдЧ I: рдХреЛрдИ рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ


рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХрд┐рдП рдЧрдП:

MongoDB

  1. db.tmp.find({id:{$gt:10000}}) /* */
  2. db.tmp.find({floatvalue: {$lt:300000}}) /* */
  3. db.tmp.find({title:/^/}).explain() /* ┬л┬╗ */
  4. db.tmp.find({text://}).explain() /* ┬л┬╗ */

PostgreSQL (рд╕рднреА рд╕рдорд╛рди, рд▓реЗрдХрд┐рди SQL рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ)

  1. select * from tmp where id>10000
  2. select * from tmp where floatvalue<300000
  3. select * from tmp where title like '%'
  4. select * from tmp where text like '%%'


рдкреНрд░рдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рди рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ (рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдФрд░ рд░реИрдо рдЖрдХрд╛рд░) рдХреЗ рдФрд╕рдд рд╕рдВрдХреЗрддрдХ рднреА рдереЗред

рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдХреЗ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЧрддрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреЗрд╢ рдХреА рдЧрдИ рдереА (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ / рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛)ред

рддрд╛рд▓рд┐рдХрд╛ / рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрд░реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЫрд╡рд┐

рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЧрддрд┐ ( 400g рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 765 PostgreSQL рдХреЗ рд▓рд┐рдП) рдХреЗ рдХрд╛рд░рдг MongoDB рдЕрдкрдиреЗ рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди PostgreSQL рдиреЗ рдЖрдИрдбреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ process terminated рдХрд░рдиреЗ рдХреА process terminated рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ ( рд╕рд╛рдЭрд╛_рдмрд░реНрдлрд░реНрд╕ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП , рдЖрджрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ, рдореИрдВрдиреЗ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдереА)ред

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, MongoDB рдХрд╛ рдРрд╕рд╛ рдкреГрдердХреНрдХрд░рдг рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реИред рдирдореВрдиреЗ рдХреЗ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдЖрдВрдХрдбрд╝реЗ:

MongoDB

рдЬрдмрдХрд┐ PostgreSQL

рдпрджрд┐ рдФрд╕рдд рд╣реИ, рддреЛ рдЗрди DBMS рдХреЗ рдмреАрдЪ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рд╕реНрдореГрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░, рдирдореВрдирд╛рдХрд░рдг рдкрд░ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм MongoDB рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ, рдпрд╣ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ( PostgfSQL рдХреЗ рд▓рд┐рдП 745 рдПрдордмреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1407 рдПрдордмреА )ред

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

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


All Articles