Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ libmdbx v1.0 послС пяти Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libmdbx являСтся сущСствСнно ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ LMDB β€” ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ встраиваСмой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… класса ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
ВСкущая вСрсия v0.5 являСтся тСхничСским Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ„Π°Π·Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΈ стабилизации, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

LMDB являСтся достаточно извСстной Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ встраиваСмой Π‘Π£Π‘Π” класса Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β» Π½Π° основС Π΄Π΅Ρ€Π΅Π²Π° B+ Π±Π΅Π· ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, которая позволяСт Ρ€ΠΎΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… процСссов ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с локально-раздСляСмой (Π½Π΅ сСтСвой) Π‘Π”. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ MDBX быстрСС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅ LMDB, ΠΏΡ€ΠΈ этом libmdbx сохраняСт всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности своСго прародитСля, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ACID ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ядрам CPU, Π° Ρ‚Π°ΠΊΠΆΠ΅ добавляСт нСсколько Π½ΠΎΠ²Ρ‹Ρ….

ОписаниС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΈ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ libmdbx ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ LMDB заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ (планируСтся ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Β«Π₯Π°Π±Ρ€Π΅Β» ΠΈ Β«MediumΒ»). Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ умСстно ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅:

  • ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ большС внимания удСляСтся качСству ΠΊΠΎΠ΄Π°, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ автоматичСским ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌ.
  • БущСствСнно большС контроля Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹, начиная ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π΄ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π°ΡƒΠ΄ΠΈΡ‚Π° структур Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  • Авто-компактификация ΠΈ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π‘Π”.
  • Π•Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π‘Π” для 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… сборок.
  • ΠžΡ†Π΅Π½ΠΊΠ° объСма Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ (range query estimation).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π²Π΄Π²ΠΎΠ΅ большСй Π±Π»ΠΈΠ½Ρ‹ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы Π‘Π”.

Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ libmdbx являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (см Π΄Π°Π»Π΅Π΅) ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² MDBX ΠΈ MithrilDB Π² августС 2019. ΠŸΡ€ΠΈ этом Π² libmdbx Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ (Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ) максимум тСхничСского Π΄ΠΎΠ»Π³Π° ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. По-Ρ„Π°ΠΊΡ‚Ρƒ Π² ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ сдСлано Π² 2-3 Ρ€Π°Π·Π° большС, Ρ‡Π΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π»ΠΎΡΡŒ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ исходно:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Mac OS ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Β«Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ эшСлона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° AIX ΠΈ HP -UX ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΈ нСобходимости.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° санация ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Undefined Behavior Sanitizer ΠΈ Address Sanitizer, устранСны всС прСдупрСТдСния ΠΏΡ€ΠΈ сборкС с -Wpedantic, всС прСдупрСТдСния Coverity Static Analyzer ΠΈ Ρ‚.Β Π΄.
  • Актуализация описания API.
  • ΠΠΌΠ°Π»ΡŒΠ³Π°ΠΌΠ°Ρ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° для удобства встраивания.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° CMake.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.
  • ИспользованиС bootid для опрСдСлСния Ρ„Π°ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ОБ (грязной остановки Π‘Π”).
  • Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ подсчСт ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Ρ…/старых страниц ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ информация ΠΎ транзакциях.
  • ΠžΠΏΡ†ΠΈΡ MDBX_ACCEDE для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π‘Π” Π² совмСстимом Ρ€Π΅ΠΆΠΈΠΌΠ΅.
  • ИспользованиС OFD-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΈ ΠΈΡ… доступности.
  • ГорячСС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² pipe.
  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки (Π΄ΠΎ 2-3 Ρ€Π°Π· быстрСС qsort() ΠΈ Π΄ΠΎ 30% быстрСС std::sort()).
  • Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½Π° максимальная Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π°.
  • АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ read ahead (стратСгиСй ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° Π‘Π” Π² памяти).
  • Π‘ΠΎΠ»Π΅Π΅ агрСссивная ΠΈ быстрая Π°Π²Ρ‚ΠΎ-компактификация.
  • Π‘ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ стратСгия слияния страниц B+ Π΄Π΅Ρ€Π΅Π²Π°.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π΅-Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (NFS, Samba ΠΈ Ρ‚.ΠΏ.) для прСдотвращСния поврСТдСния Π‘Π” ΠΏΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ использовании.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ Π½Π°Π±ΠΎΡ€ тСстов.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Β«ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉΒ» вСрсии libmdbx Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MithrilDB, Π² Ρ‚ΠΎΠΌ врСмя ΠΊΠ°ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Β«Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉΒ» вСрсии MDBX Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΡƒ Π½Π°Π±ΠΎΡ€Π° возмоТностСй ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ принято ΠΏΠΎ Ρ‚Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  • Полная Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… возмоТностСй Π² MithrilDB трСбуСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ (нСсовмСстимый) Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π‘Π” ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ (нСсовмСстимоС) API.
  • Новый исходный ΠΊΠΎΠ΄: для исходного ΠΊΠΎΠ΄Π° MithrilDB обСспСчСна лицСнзионная Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ LMDB, Π° сам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ планируСтся ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ (ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½ΠΎΠΉ OSI Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π½Π΅ OpenLDAP Foundation).
  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, внСсти большС опрСдСлСнности ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

MithrilDB ΠΊΠ°ΠΊ ΠΈ MDBX, Ρ‚Π°ΠΊΠΆΠ΅ основываСтся Π½Π° Π΄Π΅Ρ€Π΅Π²Π΅ B+ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ отличатся ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈ этом устраняя ряд ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… нСдостатков MDBX ΠΈ LMDB. Π’ частности, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Β«Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‡Ρ‚Π΅Π½ΠΈΠΉΒ», ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ ΠΊΠ°ΠΊ «распуханиС» Π‘Π” ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° мусора блокируСтся Π΄ΠΎΠ»Π³ΠΈΠΌ Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ транзакциями. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй MithrilDB слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ:

  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° размСщСния Π‘Π” Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… носитСлях: HDD, SSD ΠΈ энСргонСзависимой памяти.
  • ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для Β«Ρ†Π΅Π½Π½Ρ‹Ρ…Β» ΠΈ Β«ΠΌΠ°Π»ΠΎΡ†Π΅Π½Π½Ρ‹Ρ…Β», для «горячих», Β«Ρ‚Π΅ΠΏΠ»Ρ‹Ρ…Β» ΠΈ Β«Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹Ρ…Β» Π΄Π°Π½Π½Ρ‹Ρ….
  • использованиС Merkle tree для контроля цСлостности Π‘Π”.
  • ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ использованиС WAL ΠΈ сущСствСнно Π±ΠΎΠ»Π΅Π΅ высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² сцСнариях с интСнсивной записью ΠΈ гарантиями Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….
  • лСнивая Π΄ΠΎΠ³ΠΎΠ½ΡΡŽΡ‰Π°Ρ фиксация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дисках.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ