ืœืื—ืจ ื—ืžืฉ ืฉื ื™ื ืฉืœ ืคื™ืชื•ื—, ืคื•ืจืกื ื”ืžื•ืขืžื“ ื”ืฉื ื™ ืœื’ืจืกื” ืฉืœ libmdbx 1.0

ื–ืžื™ืŸ ืœื‘ื“ื™ืงืช ื”ืžื•ืขืžื“ ื”ืฉื ื™ ืœืฉื—ืจื•ืจ ืกืคืจื™ื™ื” libmdbx ืขื ื™ื™ืฉื•ื ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ืžืฉื•ื‘ืฅ ืงื•ืžืคืงื˜ื™ ื‘ืขืœ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื. ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช (0.5) ื”ื™ื ืžื”ื“ื•ืจื” ื˜ื›ื ื™ืช, ืžืกืžื ืช ืืช ื”ืฉืœืžืช ื›ืœ ืฉื™ืคื•ืจื™ื ื•ืืช ื”ืžืขื‘ืจ ืœืฉืœื‘ ืฉืœ ื‘ื“ื™ืงื•ืช ืกื•ืคื™ื•ืช ื•ื™ื™ืฆื•ื‘ ืคื•ืžื‘ื™ื•ืช, ืขื ื”ื™ื•ื•ืฆืจื•ืชื” ืฉืœ ื”ืžื”ื“ื•ืจื” ื”ืžืœืื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืกืคืจื™ื™ื”. ืงื•ื“ libmdbx ืžื•ืคืฅ ืขืœ ื™ื“ื™ ืžื•ืจืฉื” ืชื—ืช ื”ืจื™ืฉื™ื•ืŸ ื”ืฆื™ื‘ื•ืจื™ ืฉืœ OpenLDAP.

ืกืคืจื™ื™ืช MDBX ื”ื™ื ืžื–ืœื’ ืžืขื•ื“ื›ืŸ ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ LMDB - DBMS ืžื•ื˜ื‘ืข ื˜ืจื ื–ืงืฆื™ื•ืช ืฉืœ ืžื—ืœืงืช "ืžืคืชื—-ืขืจืš" ืžื‘ื•ืกืก ืขืœ ืขืฅ B+ ะฑะตะท ืจื™ืฉื•ื ื™ื–ื•ื, ื”ืžืืคืฉืจ ืœืชื”ืœื™ื›ื™ื ืžืจื•ื‘ื™ ื”ืœื™ื›ื™ ืœืขื‘ื•ื“ ื‘ืฆื•ืจื” ืชื—ืจื•ืชื™ืช ื•ื™ืขื™ืœื” ืขื ืžืกื“ ื ืชื•ื ื™ื ืžืฉื•ืชืฃ ืžืงื•ืžื™ (ืœื ืจืฉืช). ื‘ืชื•ืจื•, MDBX ืžื”ื™ืจ ื•ืืžื™ืŸ ื™ื•ืชืจ ืž-LMDB, ื•ื‘ื• ื‘ื–ืžืŸ ืฉื•ืžืจ ืขืœ ื›ืœ ืชื›ื•ื ื•ืช ื”ืžืคืชื— ืฉืœ ื”ืื‘ ื”ืงื“ืžื•ืŸ ืฉืœื•, ื›ื’ื•ืŸ ACID ื•ืงืจื™ืื” ืœื ื—ื•ืกืžืช ืขื ืงื ื” ืžื™ื“ื” ืœื™ื ื™ืืจื™ ืขืœ ืคื ื™ ืœื™ื‘ื•ืช ื”ืžืขื‘ื“.

ื”ื”ื‘ื“ืœื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ื‘ื™ืŸ MDBX ืœ-LMDB:

  • ื‘ืขื™ืงืจื•ืŸ, ืชืฉื•ืžืช ืœื‘ ืจื‘ื” ื™ื•ืชืจ ืžื•ืงื“ืฉืช ืœืื™ื›ื•ืช ื”ืงื•ื“, ืœื‘ื“ื™ืงื•ืช ื•ืœื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช.
  • ื™ื•ืชืจ ืฉืœื™ื˜ื” ืžืฉืžืขื•ืชื™ืช ื‘ืžื”ืœืš ื”ืคืขื•ืœื”, ืžื‘ื“ื™ืงืช ืคืจืžื˜ืจื™ื ื•ืขื“ ื‘ื™ืงื•ืจืช ืคื ื™ืžื™ืช ืฉืœ ืžื‘ื ื™ ืžืกื“ ื ืชื•ื ื™ื.
  • ืงื•ืžืคืงืฆื™ื” ืื•ื˜ื•ืžื˜ื™ืช ื•ื ื™ื”ื•ืœ ื’ื•ื“ืœ ืžืกื“ ื ืชื•ื ื™ื ืื•ื˜ื•ืžื˜ื™.
  • ืคื•ืจืžื˜ ืžืกื“ ื ืชื•ื ื™ื ื™ื—ื™ื“ ืœืžื›ืœื•ืœื™ื ืฉืœ 32 ืกื™ื‘ื™ื•ืช ื•-64 ืกื™ื‘ื™ื•ืช.
  • ืื•ืžื“ืŸ ื ืคื—ื™ ื“ื’ื™ืžื” ืœืคื™ ื˜ื•ื•ื—ื™ื (ื”ืขืจื›ืช ืฉืื™ืœืชืช ื˜ื•ื•ื—).
  • ืชืžื™ื›ื” ื‘ืžืคืชื—ื•ืช ื’ื“ื•ืœื™ื ืคื™ ืฉื ื™ื™ื ืžืคื ืงื™ื™ืงื™ื ื•ื’ื•ื“ืœ ืขืžื•ื“ ืžืกื“ ื ืชื•ื ื™ื ืœื‘ื—ื™ืจืช ื”ืžืฉืชืžืฉ.

ื”ืžื•ืขืžื“ ืœืฉื—ืจื•ืจ libmdbx ื”ื•ื ืชื•ืฆืื” ืฉืœ ื”ื—ืœื˜ื” ืฉื”ืชืงื‘ืœื” ื‘ืื•ื’ื•ืกื˜ 2019 ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืคืจื•ื™ืงื˜ื™ MDBX ืœ-MithrilDB. ื‘ืžืงื‘ื™ืœ, libmdbx ื”ื—ืœื™ื˜ื” ืœื‘ื˜ืœ ืืช ื”ื—ื•ื‘ ื”ื˜ื›ื ื™ ื”ืžืงืกื™ืžืœื™ (ื”ืจืฆื™ื•ื ืœื™) ื•ืœื™ื™ืฆื‘ ืืช ื”ืกืคืจื™ื™ื”. ืœืžืขืฉื”, ื ืขืฉื” ื‘ื›ื™ื•ื•ืŸ ื”ืžื™ื•ืขื“ ืคื™ 2-3 ื™ื•ืชืจ ืžืžื” ืฉื”ื•ืขืจืš ื•ืžืชื•ื›ื ืŸ ื‘ืชื—ื™ืœื”:

  • ื”ื•ื˜ืžืขื” ืชืžื™ื›ื” ื‘-macOS ื•ื‘ืคืœื˜ืคื•ืจืžื•ืช ืžื”ื“ืจื’ ื”ืฉื ื™: 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, ื•ื”ืคืจื•ื™ืงื˜ ืขืฆืžื• ืžืชื•ื›ื ืŸ ืœื”ืชืคืจืกื ื‘ืจื™ืฉื™ื•ืŸ ืื—ืจ (ื‘ืื™ืฉื•ืจ ืื• ืื ืจื™ืฉื™ื•ืŸ Apache 2.0, ืœื OpenLDAP Public License).
  • ื”ื”ืคืจื“ื” ืžื•ื ืขืช ื‘ืœื‘ื•ืœ ืคื•ื˜ื ืฆื™ืืœื™, ืžืฆื™ื’ื” ื™ื•ืชืจ ื•ื“ืื•ืช ื•ืžื‘ื˜ื™ื—ื” ื“ืจืš ืขืฆืžืื™ืช ืœืคืจื•ื™ืงื˜ื™ื.

MithrilDB, ื›ืžื• MDBX, ืžื‘ื•ืกืกืช ื’ื ืขืœ ืขืฅ B+ ื•ื™ืฆื™ื’ ื’ื ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื‘ืžื™ื•ื—ื“, ืชื•ืš ื‘ื™ื˜ื•ืœ ืžืกืคืจ ื—ืกืจื•ื ื•ืช ื‘ืกื™ืกื™ื™ื ืฉืœ MDBX ื•-LMDB. ื‘ืคืจื˜, ืชื‘ื•ื˜ืœ ื‘ืขื™ื™ืช "ืงืจื™ืื” ืืจื•ื›ื”", ื”ืžืชื‘ื˜ืืช ื›"ื ืคื™ื—ื•ืช" ืฉืœ ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉืขื™ื‘ื•ื“ ื”ืืฉืคื” ื ื—ืกื ืขืœ ื™ื“ื™ ืขืกืงืื•ืช ืงืจื™ืื” ืืจื•ื›ื•ืช. ืชื›ื•ื ื•ืช MithrilDB ื—ื“ืฉื•ืช ื›ื•ืœืœื•ืช:

  • ืชืžื™ื›ื” ื‘ื”ืฆื‘ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืขืœ ืžืกืคืจ ืžื“ื™ื” ื”ื˜ืจื•ื’ื ื™ืช: HDD, SSD ื•ื–ื™ื›ืจื•ืŸ ืœื ื ื“ื™ืฃ.
  • ืืกื˜ืจื˜ื’ื™ื•ืช ืื•ืคื˜ื™ืžืœื™ื•ืช ืœื ืชื•ื ื™ื "ื‘ืขืœื™ ืขืจืš" ื•"ืขืจืš ื ืžื•ืš", ืœื ืชื•ื ื™ื "ื—ืžื™ื", "ื—ืžื™ื" ื•"ืงืจื™ื".
  • ืฉื™ืžื•ืฉ ื‘ืขืฅ Merkle ืœื ื™ื˜ื•ืจ ืฉืœืžื•ืช ืžืกื“ ื”ื ืชื•ื ื™ื.
  • ืฉื™ืžื•ืฉ ืื•ืคืฆื™ื•ื ืœื™ ื‘-WAL ื•ืฉื™ืคื•ืจ ืžืฉืžืขื•ืชื™ ื‘ื‘ื™ืฆื•ืขื™ื ื‘ืชืจื—ื™ืฉื™ื ืขืชื™ืจื™ ื›ืชื™ื‘ื” ืขื ื”ื‘ื˜ื—ื•ืช ืฉืœืžื•ืช ื ืชื•ื ื™ื.
  • ืื™ืกื•ืฃ ืขืฆืœ ื‘ื”ืขื‘ืจืช ื ืชื•ื ื™ื ืœื“ื™ืกืงื™ื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”