рдПрдореНрдмреЗрдбреЗрдб DBMS libmdbx 0.13.2 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

libmdbx 0.13.2 (MDBX) рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ, рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЙрдореНрдкреЕрдХреНрдЯ рдПрдореНрдмреЗрдбреЗрдб рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдд рдЖрд╣реЗ. libmdbx рдХреЛрдб Apache 2.0 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╕рд░реНрд╡ рд╡рд░реНрддрдорд╛рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрдгрд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд, рддрд╕реЗрдЪ рд░рд╢рд┐рдпрди Elbrus 2000. libmdbx C++ рд╕рд╛рдареА рд╡рд┐рдХрд╕рд┐рдд API, рддрд╕реЗрдЪ Rust, Haskell, Python, NodeJS, Ruby, Go, Nim рдпрд╛ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рдЙрддреНрд╕рд╛рд╣реА-рд╕рдорд░реНрдерд┐рдд рдмрдВрдзрдиреЗ рдСрдлрд░ рдХрд░рддреЗ. , Deno, Scala.

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

рдореБрдЦреНрдп рдмрджрд▓:

  • рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рдкреГрд╖реНрда рд╕реВрдЪреА рдкрд░рдд рдХрд░рддрд╛рдирд╛ / рдЯрд╛рдХрддрд╛рдирд╛ GC рдЕрдкрдбреЗрдЯрдЪреА рдЧрддреА рд╡рд╛рдврд╡рд╛. рдкреВрд░реНрд╡реА рдЕрдХреНрд╖рдо рдХреЗрд▓реЗрд▓рд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдЕрднрд┐рдкреНрд░рд╛рдп рдореЛрдб рд╕реБрдзрд╛рд░рд┐рдд рдЖрдгрд┐ рд╕рдХреНрд░рд┐рдп рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рд╣реЗ рдореВрд▓рднреВрддрдкрдгреЗ рд╕реБрдзрд╛рд░рд┐рдд рдЕрднрд┐рд╕рд░рдг (рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрдирд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА), рдЖрдгрд┐ рджреБрд░реНрдорд┐рд│ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛рдирд╛ (MDBX_PROBLEM рддреНрд░реБрдЯреАрдЪреНрдпрд╛ рдкрд░рддрд╛рд╡реНрдпрд╛рд╕рд╣) "рд▓реВрдкрд┐рдВрдЧ" рд╣реЛрдгреНрдпрд╛рд╕ рдХрд╛рд░рдгреАрднреВрдд рджреЛрд╖ рджреЗрдЦреАрд▓ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓рд╛.
  • CMake рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ C23 рдорд╛рдирдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.
  • рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ char/wchar_t рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╛рдареА рдЯреА-рдореЕрдХреНрд░реЛ рдЬреЛрдбрд▓реЗ.
  • C++ API рдордзреНрдпреЗ рдиреЗрд╕реНрдЯреЗрдб рд░рд╛рдЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡реНрд╣рд░реНрдЬрдирд┐рдВрдЧ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪреНрдпрд╛ (тАЬрд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡реНрд╣рд░реНрдЬрдирд┐рдВрдЧ 2тАЭ) рджреБрд╕рд▒реНрдпрд╛ рдЖрд╡реГрддреНрддреАрдЪреЗ рд╕рдВрдХреНрд░рдордг рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрд╡реГрддреНрддреА рдорд╛рд╣рд┐рддреА VERSION.json рд╡рд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдгреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рдмрд┐рд▓реНрдб рдкреБрдирд░реБрддреНрдкрд╛рджрдХрддреЗрд╕рд╛рдареА, SOURCE_DATE_EPOCH рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. MDBX_BUILD_TIMESTAMP рд╕рдорд░реНрдерди рдХрд╛рдпрдо рдЖрд╣реЗ рдЖрдгрд┐ рдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ рдкреНрд░рд╛рдзрд╛рдиреНрдп рджрд┐рд▓реЗ рдЬрд╛рддреЗ.
  • MDBX_BUILD_METADATA рдкрд░реНрдпрд╛рдпрд╛рджреНрд╡рд╛рд░реЗ libmdbx рдмрд┐рд▓реНрдбрдмрджреНрджрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЖрд╣реЗ. рдЖрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рд╣рд┐рддреА рдХреЗрд╡рд│ mdbx_build.metadata рдореВрд▓реНрдп рдореНрд╣рдгреВрди рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рдд рддреА рдкреЕрдХреЗрдЬреЗрд╕ рдЗрддреНрдпрд╛рджреА рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдИрд▓.
  • API рд╡рд░реВрди рдкрд░рдд рдЖрд▓реЗрд▓реНрдпрд╛ рддреНрд░реБрдЯреАрдВрдЪреЗ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд▓реЗ. рдЖрддрд╛, рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рддрд│реА MDBX_LOG_DEBUG (рд▓реЙрдЧрд┐рдВрдЧ рддреНрд░реБрдЯреА рд╡рдЬрд╛ MDBX_NOTFOUND рд╕рд╛рдареА) рдХрд┐рдВрд╡рд╛ MDBX_LOG_TRACE (рд╕рд░реНрд╡ рддреНрд░реБрдЯреА рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддрд╕реЗрдЪ MDBX_RESULT_TRUE) рд╕реЗрдЯ рдХрд░рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ.
  • рд╡рд░реНрддрди рдмрджрд▓:
    • mdbx::cursor::get_multiple_samelenth() рдкрджреНрдзрдд рдЬреЛрдбрд▓реА рдЖрдгрд┐ mdbx::txn::put_multiple_samelenth() рдЕрд╕реЗ рдирд╛рд╡ рджрд┐рд▓реЗ.
    • C++ API рд╕реБрд╕рдВрдЧрддрддреЗрд╕рд╛рдареА, MDBX_GET_MULTIPLE рдСрдкрд░реЗрд╢рди рдЖрддрд╛ рдХреАрдЪреЗ рдореВрд▓реНрдп рджреЗрдЦреАрд▓ рдкрд░рдд рдХрд░рддреЗ.
    • mdbx::env::рднреВрдорд┐рддреА рдЖрдХрд╛рд░ рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рдВрд╕рд╛рдареА, рдмреЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдирд╕рд▓реЗрд▓реНрдпрд╛ size_t рд╡рд░реВрди рд╕реНрд╡рд╛рдХреНрд╖рд░реА intptr_t рдордзреНрдпреЗ рдмрджрд▓рд▓рд╛ рдЖрд╣реЗ.
    • CRT рдРрд╡рдЬреА ntdll рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдирд┐рд╡рдб рдЖрддрд╛ C++ API рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЕрдХреНрд╖рдо рдХрд░рддрд╛рдирд╛рдЪ рдХреЗрд▓реА рдЬрд╛рддреЗ.
    • mdbx_txn_commit() рд▓рд╛ рдкрд╛рдард╡рд▓реЗрд▓реНрдпрд╛ рд░рджреНрдж рдХреЗрд▓реЗрд▓реНрдпрд╛/рд░рдбрд▓реЗрд▓реНрдпрд╛ рд╡рд╛рдЪрд▓реЗрд▓реНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрдЪреА рдореЗрдорд░реА рдореЛрдХрд│реА рдХреЗрд▓реА рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рддреЗ. API рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░ рдЕрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ mdbx_txn_abort() рд╡рд╛рдкрд░реВрди рд╕реЛрдбрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ mdbx_txn_commit() рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рддрдГ рд░рджреНрдж рди рдХрд░рддрд╛ рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рддреНрд░реБрдЯреА рдкрд░рдд рдХрд░рддреЗ. рдпрд╛рдореБрд│реЗ ре▓рдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреАрд▓ рдмрдЧреНрд╕рдореБрд│реЗ рдореЗрдорд░реА рд▓реАрдХ рдЭрд╛рд▓реА, рдЬреНрдпрд╛рдореБрд│реЗ рд╡рд░реНрддрдирд╛рдд рдмрджрд▓ рдЭрд╛рд▓рд╛.
    • рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реНрдпрд╛рд╕ __deprecated_enum рдореЕрдХреНрд░реЛ рд╡рд╛рдкрд░рдгреЗ.
    • CMake рд╕рд╣ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, C рднрд╛рд╖рд╛ рдорд╛рдирдХ рдЖрддрд╛ CMAKE_C_STANDARD рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдирд┐рд╡рдбрд▓реЗ рдЬрд╛рддреЗ.

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

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