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