рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╕рдореНрдорд┐рд▓рд┐рдд DBMS libmdbx 0.11.3 рдХреЛ рд░рд┐рд▓реАрдЬ

libmdbx 0.11.3 (MDBX) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЗрдореНрдмреЗрдбреЗрдб рдХреБрдЮреНрдЬреА-рдорд╛рди рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред libmdbx рдХреЛрдб OpenLDAP рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЗрдЬрд╛рдЬрддрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдЫред рд╕рдмреИ рд╣рд╛рд▓рдХреЛ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреН, рд╕рд╛рдереИ рд░реВрд╕реА Elbrus 2000ред 2021 рдХреЛ рдЕрдиреНрддреНрдпрдорд╛, libmdbx рджреБрдИ рджреНрд░реБрдд Ethereum рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдорд╛ рднрдгреНрдбрд╛рд░рдг рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ - Erigon рд░ рдирдпрд╛рдБ "Shark", рдЬреБрди рдЙрдкрд▓рдмреНрдз рдЕрдиреБрд╕рд╛рд░ред рдЬрд╛рдирдХрд╛рд░реА, рдЙрдЪреНрдЪрддрдо рдкреНрд░рджрд░реНрд╢рди 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди