ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° високопроизводитСлна Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π‘Π£Π‘Π” 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, силна сСриализация Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ чСтСния с Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π² ядрата Π½Π° процСсора. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΠ»ΡŠΡ‚Π½ΡΠ²Π°Π½Π΅, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° заявката Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. ΠžΡ‚ 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 са Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½ΠΈ. ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с наслСдСни ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ: clang ΠΎΡ‚ 3.9, gcc ΠΎΡ‚ 4.8, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ асСмблиранС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° cdevtoolset-9 Π·Π° CentOS/RHEL 7.
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° ΠΌΠ΅Ρ‚Π° страница слСд Ρ€ΡŠΡ‡Π½ΠΎ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° ΠΌΠ΅Ρ‚Π° страница с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° mdbx_chk.
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° MDBX_PROBLEM, която сС Π²Ρ€ΡŠΡ‰Π° ΠΏΡ€ΠΈ прСзаписванС Π½Π° наслСдСни ΠΌΠ΅Ρ‚Π° страници.
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° MDBX_NOTFOUND Π² случай Π½Π° Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎ съвпадСниС ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° MDBX_GET_BOTH заявка.
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Linux ΠΏΡ€ΠΈ липса Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с описания Π½Π° интСрфСйси с ядрото.
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ„Π»Π°Π³ MDBX_SHRINK_ALLOWED ΠΈ опцията MDBX_ACCEDE.
  • Няколко Π½Π΅Π½ΡƒΠΆΠ½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΡΡ‚Π° са Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½ΠΈ.
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΎ Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° MDBX_RESULT_TRUE ΠΎΡ‚ функцията mdbx_env_set_option().
  • ΠžΠ±Ρ‰ΠΎ бяха Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 90 ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² 25 Ρ„Π°ΠΉΠ»Π°, ~1300 Ρ€Π΅Π΄Π° бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ, ~600 бяха ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€