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

libmdbx 0.11.3 (MDBX) рд▓рд╛рдпрдмреНрд░рд░реА рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЙрдореНрдкреЕрдХреНрдЯ рдПрдореНрдмреЗрдбреЗрдб рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ рд╕реЛрдбрдгреНрдпрд╛рдд рдЖрд▓реА. libmdbx рдХреЛрдб OpenLDAP рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрд╣реЗ. рд╕рд░реНрд╡ рд╡рд░реНрддрдорд╛рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрдгрд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд, рддрд╕реЗрдЪ рд░рд╢рд┐рдпрди рдПрд▓реНрдмреНрд░рд╕ 2000. 2021 рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, libmdbx рджреЛрди рд╡реЗрдЧрд╡рд╛рди рдЗрдерд░рд┐рдпрдо рдХреНрд▓рд╛рдпрдВрдЯрдордзреНрдпреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдмреЕрдХрдПрдВрдб рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ - рдПрд░рд┐рдЧреЙрди рдЖрдгрд┐ рдирд╡реАрди "рд╢рд╛рд░реНрдХ", рдЬреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдорд╛рд╣рд┐рддреА, рд╕рд░реНрд╡реЛрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ Ethereum рдХреНрд▓рд╛рдпрдВрдЯ рдЖрд╣реЗ.

рдРрддрд┐рд╣рд╛рд╕рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛, libmdbx рд╣реЗ LMDB DBMS рдЪреЗ рд╕рдЦреЛрд▓ рд░реАрдбрд┐рдЭрд╛рдЗрди рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛, рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдВрдЪ рдЖрдгрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреНрдпрд╛рдЪреНрдпрд╛ рдкреВрд░реНрд╡рдЬрд╛рдВрдирд╛ рдорд╛рдЧреЗ рдЯрд╛рдХрддреЗ. LMDB рдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд, libmdbx рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛, API рд╕реНрдерд┐рд░рддрд╛, рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рддрдкрд╛рд╕рдгреНрдпрд╛рдВрд╡рд░ рдЦреВрдк рднрд░ рджреЗрддреЗ. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдиреЗрдЪреА рдЕрдЦрдВрдбрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрддрддрд╛ рдХрд╛рд╣реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреА рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╣ рдкреБрд░рд╡рд▓реА рдЬрд╛рддреЗ.

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

libmdbx C++ API, рддрд╕реЗрдЪ Rust, Haskell, Python, NodeJS, Ruby, Go, рдЖрдгрд┐ Nim рд╕рд╛рдареА рдЙрддреНрд╕рд╛рд╣реА-рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛ рдмрдВрдзрдиреЗ рджреЗрддреЗ.

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

  • C++ API рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ.
  • рдкреНрд░рдЪрдВрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛рдирд╛ GC рдбреЗрдЯрд╛рдЪреЗ рдЕрдкрдбреЗрдЯ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╡реЗрдЧрд╡рд╛рди рдЭрд╛рд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд╡рд┐рд╢реЗрд╖рддрдГ Ethereum рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ libmdbx рд╡рд╛рдкрд░рддрд╛рдирд╛ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ.
  • рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрд╡рд░реВрдкрд╛рддреАрд▓ рдЕрдВрддрд░реНрдЧрдд рд╕реНрд╡рд╛рдХреНрд╖рд░реА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрджреНрдпрддрдирд╛рд╕ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдмрджрд▓рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдкреВрд░реНрдгрдкрдгреЗ рдкрд╛рд░рджрд░реНрд╢рдХ рдЖрд╣реЗ. рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдХрд╛рд▓рдмрд╛рд╣реНрдп рдЖрд╡реГрддреНрддреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдХрдбреВрди рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реЗрд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░рд╛рдмрджреНрджрд▓ рдЪреБрдХреАрдЪреЗ-рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрджреЗрд╢ рджреВрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() рдЖрдгрд┐ mdbx_env_get_syncbytes(). MDBX_SET_UPPERBOUND рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • C++ 11/14/17/20 рдореЛрдбрдордзреНрдпреЗ рд╕рд░реНрд╡ рд╕рдорд░реНрдерд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕рд╕рд╣ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╕рд░реНрд╡ рдЪреЗрддрд╛рд╡рдгреА рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рд▓реЗрдЧрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕рд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ: 3.9 рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░рд╛ рдХреНрд▓реЕрдВрдЧ, 4.8 рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░рд╛ gcc, CentOS/RHEL 9 рд╕рд╛рдареА cdevtoolset-7 рд╡рд╛рдкрд░реВрди рдЕрд╕реЗрдВрдмреНрд▓реАрд╕рд╣.
  • mdbx_chk рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдЯрд╛ рдкреГрд╖реНрдард╛рд╡рд░ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдореЗрдЯрд╛ рдкреГрд╖реНрда рд╕рдВрдШрд░реНрд╖рд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА.
  • рд▓реЗрдЧрд╕реА рдореЗрдЯрд╛ рдкреГрд╖реНрдареЗ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдЯ рдХрд░рддрд╛рдирд╛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд MDBX_PROBLEM рддреНрд░реБрдЯреА рдкрд░рдд рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ.
  • MDBX_GET_BOTH рд╡рд┐рдирдВрддреАрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛ рдЕрдЪреВрдХ рдЬреБрд│рдгреА рдЭрд╛рд▓реНрдпрд╛рд╕ MDBX_NOTFOUND рдкрд░рдд рдХрд░рдгреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • рдХрд░реНрдирд▓рд╕рд╣ рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рд╕рд╣ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдлрд╛рдпрд▓реАрдВрдЪреНрдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддреАрдд рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯреАрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ.
  • MDBX_SHRINK_ALLOWED рдЕрдВрддрд░реНрдЧрдд рдзреНрд╡рдЬ рдЖрдгрд┐ MDBX_ACCEDE рдкрд░реНрдпрд╛рдпрд╛рдордзреАрд▓ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓рд╛.
  • рдЕрдиреЗрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕтАНреЕрд╕реНрд░реНрдЯ рдЪреЗрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрд╣реЗрдд.
  • mdbx_env_set_option() рдлрдВрдХреНрд╢рдирдордзреВрди MDBX_RESULT_TRUE рдЪреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкрд░рддрд╛рд╡рд╛.
  • рдПрдХреВрдг, 90 рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ 25 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ, ~ 1300 рдУрд│реА рдЬреЛрдбрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛, ~ 600 рд╣рдЯрд╡рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛.

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

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