เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบเบฑเบ‡ DBMS libmdbx เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡ 0.11.3

เบซเปเบชเบฐเปเบธเบ” libmdbx 0.11.3 (MDBX) เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเบฑเบ‡เบ•เบปเบงเบ‚เบญเบ‡เบ„เบต-เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบžเบฒเบšเบชเบนเบ‡. เบฅเบฐเบซเบฑเบ” libmdbx เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ OpenLDAP. เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเบฑเบ”เป€เบŠเบ Elbrus 2000. เปƒเบ™เบ—เป‰เบฒเบเบ›เบต 2021, libmdbx เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™ backend เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบชเบญเบ‡เบฅเบนเบเบ„เป‰เบฒ Ethereum เบ—เบตเปˆเป„เบงเบ—เบตเปˆเบชเบธเบ” - Erigon เปเบฅเบฐ "Shark" เปƒเบซเบกเปˆ, เป€เบŠเบดเปˆเบ‡, เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบกเบต. เบ‚เปเป‰เบกเบนเบ™, เปเบกเปˆเบ™เบฅเบนเบเบ„เป‰เบฒ Ethereum เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบชเบธเบ”.

เปƒเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”, libmdbx เปเบกเปˆเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบ‚เบญเบ‡ LMDB DBMS เปเบฅเบฐเบ”เบตเบเบงเปˆเบฒเบšเบฑเบ™เบžเบฐเบšเบธเบฅเบธเบ”เบ‚เบญเบ‡เบ•เบปเบ™เปƒเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท, เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบš LMDB, libmdbx เป€เบ™เบฑเป‰เบ™เบซเบ™เบฑเบเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบฅเบฐเบซเบฑเบ”, เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡ API, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰.

เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต, libmdbx เบชเบฐเบซเบ™เบญเบ‡ ACID, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ serialization เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡, เปเบฅเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป€เบชเบฑเป‰เบ™เบœเปˆเบฒเบ™เปเบเบ™ CPU. เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบฅเบฐเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป„เบฅเบเบฐเปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ›เบต 2016, เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบฎเบฑเบšเบ—เบถเบ™เบˆเบฒเบ Positive Technologies เปเบฅเบฐเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบ•เบปเบ™เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ 2017.

libmdbx เบชเบฐเบซเบ™เบญเบ‡ C++ API, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบžเบฒเบชเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš Rust, Haskell, Python, NodeJS, Ruby, Go, เปเบฅเบฐ Nim.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ เปเบฅเบฐ เปเบเป‰เป„เบ‚เบญเบฑเบ™เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเบกเบฒเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เปˆเบฒเบงเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปƒเบ™เบงเบฑเบ™เบ—เบต 11 เบ•เบธเบฅเบฒ:

  • C++ API เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบžเป‰เบญเบกเบ™เบณเปƒเบŠเป‰เปเบฅเป‰เบง.
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™ GC เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป„เบ”เป‰เบ–เบทเบเป€เบฅเบฑเปˆเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ libmdbx เปƒเบ™เบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ” Ethereum.
  • เบฅเบฒเบเป€เบŠเบฑเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบชเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเปเป‰เบฅเบฒเบ”เบšเบฑเบ‡เบซเบผเบงเบ‡เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบกเบทเปˆเบญเบชเบฐเบšเบฑเบšเบฅเป‰เบฒเบชเบฐเป„เบซเบกเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบญเปˆเบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เป‚เบ”เบเบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™.
  • เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™ mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() เปเบฅเบฐ mdbx_env_get_syncbytes(). เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ MDBX_SET_UPPERBOUND.
  • เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบฑเบ‡เปเบปเบ”เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบงเบชเบฑเบ‡เบฅเบงเบกเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เป‚เปเบ” C++ 11/14/17/20 เป„เบ”เป‰เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เปเบฅเป‰เบง. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš compilers เปเบšเบšเป€เบเบปเปˆเบฒเปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™: clang เป€เบฅเบตเปˆเบกเบˆเบฒเบ 3.9, gcc เป€เบฅเบตเปˆเบกเบˆเบฒเบ 4.8, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเป‚เบ”เบเปƒเบŠเป‰ cdevtoolset-9 เบชเปเบฒเบฅเบฑเบš CentOS/RHEL 7.
  • เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡เบ‚เบญเบ‡เบซเบ™เป‰เบฒ meta เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เปˆเบฝเบ™เป„เบ›เบซเบฒเบซเบ™เป‰เบฒ meta เบชเบฐเป€เบžเบฒเบฐเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เป‚เบ”เบเปƒเบŠเป‰ mdbx_chk utility.
  • เปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” MDBX_PROBLEM เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบ—เบฑเบšเบซเบ™เป‰เบฒ meta เป€เบเบปเปˆเบฒ.
  • เปเบเป‰เป„เบ‚เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™ MDBX_NOTFOUND เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ„เบณเบฎเป‰เบญเบ‡เบ‚เป MDBX_GET_BOTH.
  • เปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ Linux เปƒเบ™เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒ header เบ—เบตเปˆเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš kernel.
  • เปเบเป‰เป„เบ‚เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ MDBX_SHRINK_ALLOWED เบ—เบธเบ‡เบžเบฒเบเปƒเบ™ เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบ MDBX_ACCEDE.
  • เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบขเบทเบ™เบขเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡.
  • เปเบเป‰เป„เบ‚เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เบ‚เบญเบ‡ MDBX_RESULT_TRUE เบˆเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™ mdbx_env_set_option().
  • เปƒเบ™โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹, เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒ 90 เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰ 25 เป„เบŸเบฅโ€‹เปŒโ€‹, ~ 1300 เป€เบชเบฑเป‰เบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบžเบตเปˆเบกโ€‹, ~ 600 เบ–เบทเบโ€‹เบฅเบปเบšโ€‹.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™