рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдореНрдмреЗрдбреЗрдб DBMS libmdbx 0.10 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рддреАрди рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, libmdbx 0.10.0 (MDBX) рд░рд┐рд▓реАрдЭ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛, рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдХреЙрдореНрдкреЕрдХреНрдЯ рдПрдореНрдмреЗрдбреЗрдб рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░реВрди. libmdbx рдХреЛрдб OpenLDAP рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрд╣реЗ. libmdbx рд╣реЗ LMDB DBMS рдЪреА рд╕рдЦреЛрд▓ рдкреБрдирд░реНрд░рдЪрдирд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдЪреНрдпрд╛ рдорддреЗ, рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛, рдХреНрд╖рдорддрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рдЖрдгрд┐ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдпрд╛рдордзреНрдпреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреВрд░реНрд╡рдЬрд╛рдВрдкреЗрдХреНрд╖рд╛ рд╢реНрд░реЗрд╖реНрда рдЖрд╣реЗ. рдЕрд╕реЗ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА CRUD рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ libmdbx LMDB рдкреЗрдХреНрд╖рд╛ 20% рдкрд░реНрдпрдВрдд рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ рдЖрдгрд┐ LMDB рд╢реА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рдпреЗрдгрд╛рд▒реНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░ libmdbx рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рдЕрдВрддрд░реНрдЧрдд рдирд┐рдпрдВрддреНрд░рдгреЗ рдЕрдХреНрд╖рдо рдХреЗрд▓реНрдпрд╛рд╕ 30% рдкрд░реНрдпрдВрдд рдЬрд▓рдж рдЖрд╣реЗ.

Libmdbx ACID, рд╕реНрдЯреНрд░рд╛рдБрдЧ рдЪреЗрдВрдЬ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рд░реАрдбреНрд╕ рдСрдлрд░ рдХрд░рддреЗ рдЬреЗ CPU рдХреЛрд░рдордзреНрдпреЗ рд░реЗрд╖реАрдпрдкрдгреЗ рд╕реНрдХреЗрд▓ рдХрд░рддрд╛рдд. libmdbx рдордзреНрдпреЗ, рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛, рд╕реНрдерд┐рд░ API рдСрдкрд░реЗрд╢рди, рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рддрдкрд╛рд╕рдгреНрдпрд╛рдВрд╡рд░ рдЬрд╛рд╕реНрдд рд▓рдХреНрд╖ рджрд┐рд▓реЗ рдЬрд╛рддреЗ. рдСрдЯреЛ-рдХреЙрдореНрдкреЕрдХреНрдЯрд┐рдлрд┐рдХреЗрд╢рди, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдХрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, 32-рдмрд┐рдЯ рдЖрдгрд┐ 64-рдмрд┐рдЯ рдЕрд╕реЗрдВрдмреНрд▓реАрд╕рд╛рдареА рдПрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрд╡рд░реВрдк рдЖрдгрд┐ рд╢реНрд░реЗрдгреА рдХреНрд╡реЗрд░реА рдЕрдВрджрд╛рдЬ рдпрд╛рдВрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ. рдХрд╛рд╣реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреА рдХреНрд╖рдорддреЗрд╕рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдиреЗрдЪреА рдЕрдЦрдВрдбрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрддрддрд╛ рдкреБрд░рд╡рд▓реА рдЬрд╛рддреЗ. 2016 рдкрд╛рд╕реВрди, рдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд▓рд╛ рдкреЙрдЭрд┐рдЯрд┐рд╡реНрд╣ рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬ рджреНрд╡рд╛рд░реЗ рдирд┐рдзреА рджрд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ 2017 рдкрд╛рд╕реВрди рддреНрдпрд╛рдЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ рдЖрдгрд┐ рдпреВрдПрд╕ рд╕рд░рдХрд╛рд░рдиреЗ рдкреЙрдЭрд┐рдЯрд┐рд╡реНрд╣ рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреАрдЬрд╡рд░ рд▓рд╛рджрд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрдмрдВрдзрд╛рдВрдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рд▓рдХреНрд╖рдгреАрдп рдкрд░рд┐рдгрд╛рдо рд╣реЛрдд рдирд╛рд╣реА.

рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд░рд┐рд▓реАрдЭрдкрд╛рд╕реВрди рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛, рд╕реБрдзрд╛рд░рдгрд╛ рдЖрдгрд┐ рдирд┐рд░рд╛рдХрд░рдгреЗ рдЬреЛрдбрд▓реА:

  • Mahlon E. Smith рдЪреА Ruby binding рдЖрдгрд┐ Noel Kuntze рдЪреА Python bindings рдЪреА рдЪрд╛рдЪрдгреА рдЖрд╡реГрддреНрддреА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдЖрдгрд┐ Alexey Sharov рдЪреА GoLang bindings рдЕрдкрдбреЗрдЯ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд.
  • тАЬMDBX_WRITEMAPтАЭ рдореЛрдбрд╕рд╛рдареА, рдЬреЗрд╡реНрд╣рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдереЗрдЯ RAM рдордзреНрдпреЗ рдмрджрд▓рд▓рд╛ рдЬрд╛рддреЛ, рддреЗрд╡реНрд╣рд╛ рдбрд┐рд╕реНрдХрд╡рд░ рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреГрд╖реНрдард╛рдВрдЪреА тАЬрдкрд╛рд░рджрд░реНрд╢рдХ рдЧрд│рддреАтАЭ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдЖрддрд╛, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рдЕрд╢реА рдкреГрд╖реНрдареЗ рдбрд┐рд╕реНрдХрд╡рд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреНрд╡рд░рд┐рдд рдкреВрд░реНрдгрдкрдгреЗ рддрдпрд╛рд░ рдЖрд╣реЗрдд рдЖрдгрд┐ OS рдХрд░реНрдирд▓ рдмрджрд▓рд▓реЗрд▓реА рдкреГрд╖реНрдареЗ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдбрд┐рд╕реНрдХрд╡рд░ рдлреНрд▓рд╢ рдХрд░реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдмрджрд▓рд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рдкрд░рд┐рдгрд╛рдореА, рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реЕрдорд╕рд╣ рд╡реНрдпрд╕реНрдд рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ, рдбрд┐рд╕реНрдХ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рдорд╛рддреНрд░рд╛ 2 рдкрдЯ рдХрдореА рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.
  • рд╕реБрдзрд╛рд░рд┐рдд рдкреГрд╖реНрдард╛рдВрдЪреНрдпрд╛ рджреАрд░реНрдШ-рди рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдЫрд╛рдпрд╛ рдкреНрд░рддреАрдВрдЪреЗ рдирд┐рд╖реНрдХрд╛рд╕рди, рдореЛрдареНрдпрд╛/рд▓рд╛рдВрдм рдореВрд▓реНрдпрд╛рдВрд╕рд╣ рдкреГрд╖реНрдареЗ рдмреЗрджрдЦрд▓ рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╛рдзрд╛рдиреНрдп рджреЗрдКрди, рдЬреЗ рдмрд╣реБрд╕рдВрдЦреНрдп рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдлрдХреНрдд рдПрдХрджрд╛рдЪ рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгрдЬреЗ рдбрд┐рд╕реНрдХ рдЯреНрд░реЕрдлрд┐рдХ рдХрдореА рд╣реЛрддреЗ рдЖрдгрд┐ рдЦреВрдк рдореЛрдареНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрд╕рд╣ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди.
  • рдХреА рдШрд╛рд▓рддрд╛рдирд╛ рдкреГрд╖реНрдареЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "рд╕реНрдорд╛рд░реНрдЯ" рдореЛрдб рд▓рд╛рдЧреВ рдХреЗрд▓рд╛. рдЖрддрд╛, рдСрд░реНрдбрд░ рдХреЗрд▓реЗрд▓реЗ рдЕрдиреБрдХреНрд░рдо рдЯрд╛рдХрддрд╛рдирд╛, рдкреГрд╖реНрдареЗ рдЖрдкреЛрдЖрдк рдкреВрд░реНрдгрдкрдгреЗ рднрд░рд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдЗрддрд░ рдмрд╛рдмрддреАрдд, рдЭрд╛рдб рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрддреЗ. рдкрд░рд┐рдгрд╛рдореА, рд╕рд░рд╛рд╕рд░реА, рдбреЗрдЯрд╛рдмреЗрд╕ рдкреГрд╖реНрдареЗ рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рднрд░рд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдмреА-рдЯреНрд░реА рдЕрдзрд┐рдХ рд╕рдВрддреБрд▓рд┐рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрд╡рд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЛ.
  • рдкреГрд╖реНрдард╛рдВрд╕рд╣ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рдЖрдХрдбреЗрд╡рд╛рд░реА рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдСрдкрд░реЗрд╢рдиреНрд╕ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд┐рдВрдорддреАрдЪрд╛ рдЕрдЪреВрдХ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рджреЗрддреЗ.
  • рдПрдХ рдбрдЭрдирд╣реВрди рдЕрдзрд┐рдХ рдмрдЧ рдЖрдгрд┐ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдд: MinGW рд╡рд╛рдкрд░реВрди рдмрд┐рд▓реНрдбрд┐рдВрдЧрдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛, iOS <= 13.0 рдордзреНрдпреЗ `std::filesystem::path` рд╡рд╛рдкрд░рдгреЗ, Windows рдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреЗ рд▓рдХреНрд╖реНрдп рдмрдирд╡рдгреЗ рдЗ.
  • рдПрдХреВрдг, 200 рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ 66 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ, ~ 6500 рдУрд│реА рдЬреЛрдбрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛, ~ 4500 рд╣рдЯрд╡рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛.

рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ, рдореА рдирд╡реАрди рд╕реНрдЯреЛрд░реЗрдЬ рдмреЕрдХрдПрдВрдб рдореНрд╣рдгреВрди рдЯрд░реНрдмреЛ-рдЧреЗрде рдкреНрд░рдХрд▓реНрдк (рдЧреЛ-рдПрдереЗрд░рд┐рдпрдордЪрд╛ рдЯрд░реНрдмреЛ рдлреЛрд░реНрдХ) libmdbx рдЪреА рдирд┐рд╡рдб рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдк рдЯреАрдордЪреЗ (рд╡рд┐рд╢реЗрд╖рдд: рдЕрд▓реЗрдХреНрд╕реА рд╢рд╛рд░реЛрд╡реНрд╣, рдЖрд░реНрдЯрд┐рдУрдо рд╡реНрд╣реЛрд░реЛрддреНрдирд┐рдХреЛрд╡реНрд╣ рдЖрдгрд┐ рдЕрд▓реЗрдХреНрд╕реА рдЕрдЦреБрдиреЛрд╡реНрд╣) рддреНрдпрд╛рдВрдЪреЗ рдЖрднрд╛рд░ рдорд╛рдирддреЛ. рдЕрддреНрдпрдВрдд рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рдд рдореЛрдареА рдорджрдд. рд╡рд┐рд╢реЗрд╖рддрдГ, рд░реАрдб-рдЕрд╣реЗрдб/рдХреЕрд╢рд┐рдВрдЧ рдирд┐рдпрдВрддреНрд░рдгрд╛рддреАрд▓ рджреЛрд╖ рд╢реЛрдзреВрди рдХрд╛рдврд▓рд╛ рдЧреЗрд▓рд╛, рдЬреНрдпрд╛рдореБрд│реЗ рдореЛрдареНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░рдгреЗ рдХрдареАрдг рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдд рдШрдЯ рдЭрд╛рд▓реА.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛