ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° 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
