ΠŸΡƒΡΠΊΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π‘Π£Π‘Π” libmdbx 0.13.2

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° вСрсия Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libmdbx 0.13.2 (MDBX) с рСализация Π½Π° високопроизводитСлна ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ клас ΠΊΠ»ΡŽΡ‡-стойност. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° libmdbx сС разпространява ΠΏΠΎΠ΄ лицСнзия Apache 2.0. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС всички Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ руския Елбрус 2000. Π—Π° libmdbx Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ€Π°Π·Π²ΠΈΡ‚ API Π·Π° C++, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΎΡ‚ Снтусиасти Π²Ρ€ΡŠΠ·ΠΊΠΈ към Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ libmdbx Π΅ дълбока ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π‘Π£Π‘Π” LMDB ΠΈ ΠΏΡ€Π΅Π²ΡŠΠ·Ρ…ΠΎΠΆΠ΄Π° своя ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½ΠΈΠΊ ΠΏΠΎ надСТдност, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈ производитСлност. Π’ сравнСниС с LMDB, Π² libmdbx сС ΠΎΠ±Ρ€ΡŠΡ‰Π° голямо Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° качСството Π½Π° ΠΊΠΎΠ΄Π°, стабилната Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° API-Ρ‚ΠΎ, тСстванСто ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. ΠŸΠΎΡΡ‚Π°Π²Ρ сС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлостта Π½Π° структурата Π½Π° Π‘Π” с някои Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ libmdbx ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ACID, строга сСриализация Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ с Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ядра Π½Π° ЦПУ. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° компактификация, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π‘Π”, ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΈΠ·Π±ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ (range query estimation).

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • УскорСно Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° GC ΠΏΡ€ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅/поставянС Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ ΠΎΡ‚ страници Π² слоТни сцСнарии. ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Π΅ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎ дСактивирания СкспСримСнталСн Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‰Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. Π’ΠΎΠ²Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ сходимостта (Π½Π°ΠΌΠ°Π»ΠΈ броя Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΎΠΏΠΈΡ‚ΠΈ) ΠΈ отстрани Π΄Π΅Ρ„Π΅ΠΊΡ‚, Π²ΠΎΠ΄Π΅Ρ‰ Π΄ΠΎ β€žΠ·Π°Ρ†ΠΈΠΊΠ»ΡΠ½Π΅β€œ ΠΏΡ€ΠΈ фиксация Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (с Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° MDBX_PROBLEM) Π² Ρ€Π΅Π΄ΠΊΠΈ спСцифични условия.
  • Π’ ΡΠ±ΠΎΡ€ΡŠΡ‡Π½ΠΈΡ‚Π΅ скриптовС CMake Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ стандарт C23.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са T-макроси Π·Π° ΠΏΠ°Ρ€Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ char/wchar_t.
  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΈΡˆΠ΅Ρ‰ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π² C++ API.
  • Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½ Π΅ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° спСцификацията Π·Π° сСмантично вСрсиониранС (β€žSemantic Versioning 2β€œ) ΠΈ Π΅ осигурСн Скспорт Π½Π° информация Π·Π° вСрсията Π² VERSION.json.
  • Π—Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ Π½Π° сборкитС Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата SOURCE_DATE_EPOCH. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° MDBX_BUILD_TIMESTAMP Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΈ Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΈΠΌΠ° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация Π·Π° сборката libmdbx Ρ‡Ρ€Π΅Π· опция MDBX_BUILD_METADATA. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π·Π°Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° информация просто сС Π²Π³Ρ€Π°ΠΆΠ΄Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΊΠ°Ρ‚ΠΎ стойност mdbx_build.metadata, Π° Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ Π΄Ρ€.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Π²Ρ€ΡŠΡ‰Π°Π½ΠΈ ΠΎΡ‚ API. Π‘Π΅Π³Π° Π·Π° Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π½ΠΈΠ²ΠΎ Π½Π° Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ MDBX_LOG_DEBUG (Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° MDBX_NOTFOUND) ΠΈΠ»ΠΈ MDBX_LOG_TRACE (Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° всички Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ MDBX_RESULT_TRUE).
  • ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ:
    • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ mdbx::cursor::get_multiple_samelength() ΠΈ Π΅ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ mdbx::txn::put_multiple_samelength().
    • Π—Π° Сднородност Π½Π° C++ API ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° опСрация MDBX_GET_MULTIPLE сСга ΡΡŠΡ‰ΠΎ сС Π²Ρ€ΡŠΡ‰Π° стойността Π½Π° самия ΠΊΠ»ΡŽΡ‡.
    • Π—Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΈΡ‚Π΅ константи mdbx::env::geometry базовият Ρ‚ΠΈΠΏ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ² size_t Π½Π° Π·Π½Π°ΠΊΠΎΠ² intptr_t.
    • Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ntdll вмСсто CRT сСга сС ΠΏΡ€Π°Π²ΠΈ само ΠΏΡ€ΠΈ явно Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° C++ API.
    • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΎ Π΅ освобоТдаванСто Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΈ/ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΈ чСтящи Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½ΠΈ Π² mdbx_txn_commit(). Π‘ΠΏΠΎΡ€Π°Π·ΡƒΠΌΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° API изисква Ρ‚Π°ΠΊΠΈΠ²Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΄Π° сС освобоТдават Ρ‡Ρ€Π΅Π· mdbx_txn_abort(), ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ функцията mdbx_txn_commit() Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² Ρ‚Π΅Π·ΠΈ случаи, Π±Π΅Π· Π΄Π° ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ°Π²Π° самитС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ изтичания Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΠΎΡ€Π°Π΄ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² прилоТСнията, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°Π»ΠΎΠΆΠΈ промяна Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.
    • ИзползванС Π½Π° макроса __deprecated_enum, Π°ΠΊΠΎ Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½.
    • ΠŸΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Ρ‡Ρ€Π΅Π· CMake, ΠΈΠ·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° стандарт Π½Π° Π΅Π·ΠΈΠΊΠ° C Π²Π΅Ρ‡Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° с ΠΎΠ³Π»Π΅Π΄ Π½Π° CMAKE_C_STANDARD.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster