ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libmdbx Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Π½Π° LMDB - ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π°, ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ.
Π’Π΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ v0.5 Π΅ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Π±Π΅Π»Π΅ΠΆΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊΡΠΌ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π΅, Ρ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΡΠ²ΠΎΡΠΎ ΠΏΡΠ»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°.
LMDB Π΅ Π΄ΠΎΡΡΠ° Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π‘Π£ΠΠ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π΄ΡΡΠ²ΠΎ B+ Π±Π΅Π· ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠΎΡΠΊ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠΊΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° (Π½Π΅ ΠΌΡΠ΅ΠΆΠΎΠ²Π°) Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΠ° ΡΠ²ΠΎΠΉ ΡΠ΅Π΄ MDBX Π΅ ΠΏΠΎ-Π±ΡΡΠ· ΠΈ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΎΡ LMDB, Π΄ΠΎΠΊΠ°ΡΠΎ libmdbx Π·Π°ΠΏΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠ²ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΠΊ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ. ACID ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π² ΡΠ΄ΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄ΠΎΠ±Π°Π²Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½ΠΎΠ²ΠΈ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° libmdbx ΡΠΏΡΡΠΌΠΎ LMDB Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ°ΡΠΈΡ (ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° HabrΓ© ΠΈ ββMedium). Π’ΡΠΊ Π΅ ΡΠΌΠ΅ΡΡΠ½ΠΎ Π΄Π° ΡΠΏΠΎΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΈ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ:
- ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ ΠΎΠ±ΡΡΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°, ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
- ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ» ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π΄ΠΎ Π²ΡΡΡΠ΅ΡΠ΅Π½ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΠ»ΡΡΠ½ΡΠ²Π°Π½Π΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- ΠΠ΄ΠΈΠ½ΠΈΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΠΈ 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠ±ΠΎΡΠΊΠΈ.
- ΠΡΠ΅Π½ΠΊΠ° Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠ°ΡΠ° ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ (ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½).
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡ ΠΏΠ°Π»Π°ΡΠΈΠ½ΠΊΠΈ ΠΈ ΠΈΠ·Π±ΠΈΡΠ°Π΅ΠΌ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
ΠΠ°Π½Π΄ΠΈΠ΄Π°ΡΡΡ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° 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 Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π² Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ.
- ΠΠΎΡΠ΅ΡΠΎ Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅ Π² ΡΡΡΠ±Π°.
- Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΡΠΎΡΡΠΈΡΠ°Π½Π΅ (Π΄ΠΎ 2-3 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ· ΠΎΡ qsort() ΠΈ Π΄ΠΎ 30% ΠΏΠΎ-Π±ΡΡΠ· ΠΎΡ std::sort()).
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π΄ΡΠ»ΠΆΠΈΠ½Π° Π½Π° ΠΊΠ»ΡΡΠ° Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π°.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄ (ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°).
- ΠΠΎ-Π°Π³ΡΠ΅ΡΠΈΠ²Π½ΠΎ ΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΠ»ΡΡΠ½ΡΠ²Π°Π½Π΅.
- ΠΠΎ-ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° 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 Π΄ΡΡΠ²ΠΎ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° WAL ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΏΠΈΡΠ°Π½Π΅ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π·Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.
- ΠΡΡΠ·Π΅Π»ΠΈΠ²ΠΎ Π½Π°Π²Π°ΠΊΡΠ²Π°ΡΠΎ ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru