ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื”ื•ื™ืš-ืคืึธืจืฉื˜ืขืœื•ื ื’ ืขืžื‘ืขื“ื™ื“ DBMS libmdbx 0.10.4 ืื•ืŸ libfpta 0.3.9

ื“ื™ libmdbx 0.10.4 (MDBX) ืœื™ื™ื‘ืจืขืจื™ื– ื–ืขื ืขืŸ ื‘ืืคืจื™ื™ื˜ ืžื™ื˜ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื”ื•ื™ืš-ืคืึธืจืฉื˜ืขืœื•ื ื’ ืกืึธืœื™ื“ ืขืžื‘ืขื“ื™ื“ ืฉืœื™ืกืœ-ื•ื•ืขืจื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ืŸ ื“ื™ ืคึฟืึทืจื‘ื•ื ื“ืŸ libfpta 0.3.9 (FPTA) ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ืึท ื˜ืึทื‘ื•ืœืึทืจ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ื“ืึทื˜ืŸ ืžื™ื˜ ืฆื•ื•ื™ื™ื˜ื™ืง ืื•ืŸ ืงืึธืžืคึผืึธืกื™ื˜ืข ื™ื ื“ืขืงืกื™ื–. ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ MDBX. ื‘ื™ื™ื“ืข ืœื™ื™ื‘ืจืขืจื™ื– ื–ืขื ืขืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ OSI ื‘ืื•ื•ื™ืœื™ืงื˜ ืœื™ื™ืกืึทื ืกื™ื–. ืึทืœืข ืงืจืึทื ื˜ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ ืื•ืŸ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื– ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืจื•ืกื™ืฉ Elbrus 2000.

ื”ื™ืกื˜ืึธืจื™ืฉ, ืœื™ื‘ืžื“ื‘ืงืก ืื™ื– ืึท ื˜ื™ืฃ ืจื™ื•ื•ืขืจืงื™ื ื’ ืคื•ืŸ ื“ื™ LMDB DBMS ืื•ืŸ ืื™ื– ื”ืขื›ืขืจ ืฆื• ื–ื™ื™ืŸ ืึธื•ื•ืขืก ืื™ืŸ ืจื™ืœื™ื™ืึทื‘ื™ืœืึทื˜ื™, ืฉื˜ืจื™ืš ืฉื˜ืขืœืŸ ืื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’. ืงืึทืžืคึผืขืจื“ ืฆื• LMDB, ืœื™ื‘ืžื“ื‘ืงืก ืœื™ื™ื’ื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื˜ืจืึธืคึผ ืื•ื™ืฃ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜, ืึทืคึผื™ ืคืขืกื˜ืงื™ื™ึทื˜, ื˜ืขืกื˜ื™ื ื’ ืื•ืŸ ืึธื˜ืึทืžื™ื™ื˜ื™ื“ ื˜ืฉืขืงืก. ื ื ื•ืฆืŸ ืคึฟืึทืจ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืกื˜ืจื•ืงื˜ื•ืจ ืžื™ื˜ ืขื˜ืœืขื›ืข ืึธืคึผื–ื•ืš ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืื™ื– ืกืึทืคึผืœื™ื™ื“.

ื˜ืขื›ื ืึธืœืึธื’ื™ืข-ืงืœื•ื’, libmdbx ืึธืคืคืขืจืก ืึทืกื™ื“, ืฉื˜ืึทืจืง ื˜ื•ื™ืฉืŸ ืกื™ืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืื•ืŸ ื ื™ื˜-ื‘ืœืึทืงื™ื ื’ ืœื™ื™ืขื ืขืŸ ืžื™ื˜ ืœื™ื ืขืึทืจ ืกืงื™ื™ืœื™ื ื’ ืึทืจื™ื‘ืขืจ ืงืคึผื• ืงืึธืจืขืก. ืึทื•ื˜ืึธ-ืงืึธืžืคึผืึทืงื˜ืึทืคืึทืงื™ื™ืฉืึทืŸ, ืึธื˜ืึทืžืึทื˜ื™ืง ื“ื™ื™ื˜ืึทื‘ื™ื™ืก ื’ืจื™ื™ืก ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืื•ืŸ ืงื™ื™ื˜ ืึธื ืคึฟืจืขื’ ืึธืคึผืฉืึทืฆื•ื ื’ ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜. ื–ื™ื ื˜ 2016, ืคึผืจืึทื“ื–ืฉืขืงืก ื–ืขื ืขืŸ ืคืึทื ื“ืึทื“ ื“ื•ืจืš positive ื˜ืขื˜ืฉื ืึธืœืึธื’ื™ืขืก ืื•ืŸ ื–ื™ื ื˜ 2017 ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื–ื™ื™ึทืŸ ืคึผืจืึธื“ื•ืงื˜ืŸ.

libmdbx ืึธืคืคืขืจืก ืึท C ++ ืึทืคึผื™, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืขื ื˜ื•ื–ื™ืึทืกื˜-ื’ืขืฉื˜ื™ืฆื˜ ืฉืคึผืจืึทืš ื‘ื™ื™ื ื“ื™ื ื’ื– ืคึฟืึทืจ Rust, Haskell, Python, NodeJS, Ruby, Go ืื•ืŸ Nim. ืคึฟืึทืจ libfpta, ื‘ืœื•ื™ื– ื“ื™ ืึทืคึผื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืื™ื– ืขืคื ื˜ืœืขืš ื‘ื ื™ืžืฆื ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท C / C ++ ื›ืขื“ืขืจ ื˜ืขืงืข.

ื”ื•ื™ืคึผื˜ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื–, ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืื•ืŸ ืงืขืจืขืงืฉืึทื ื– ืฆื•ื’ืขื’ืขื‘ืŸ ื–ื™ื ื˜ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื ื™ื™ึทืขืก ืื•ื™ืฃ ืžืื™ 9:

  • ื™ื ื™ื™ื‘ืึทืœื– ืจืขืคึผืจืึธื“ื•ืกื™ื‘ืœืข ื‘ื•ื™ืขืŸ.
  • ืคืึทืจืคืขืกื˜ื™ืงื˜ ืึท ื–ืฉื•ืง ืจืขื›ื˜ ืฆื• ื•ื•ืึธืก, ืื™ืŸ ื–ื™ื™ืขืจ ื–ืขืœื˜ืŸ ืฆื•ืฉื˜ืื ื“ืŸ, ืึท ืฉืœื™ื™ืฃ / ืคืจื™ืจืŸ ืงืขืŸ ืคึผืึทืกื™ืจืŸ ื‘ืขืฉืึทืก ืึท ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ื™ื‘ืขืจื’ืขื‘ืŸ. ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ื’ืขื•ื•ืขืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ื“ื•ืจืš Positive Technologies ืกืคึผืขืฉืึทืœืึทืกืฅ ื‘ืขืฉืึทืก ื™ื ืขืจืœืขืš ื˜ืขืกื˜ื™ื ื’ ืคื•ืŸ ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข ืคึผืจืึธื“ื•ืงื˜ืŸ.
  • ื˜ืขืกืฅ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื™ืžืคึผืจื•ื•ื•ื“ ืื•ืŸ ืคึผืจืึธื‘ืข ืกื™ื ืขืจื™ืึธื•ื– ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื™ืงืกืคึผืึทื ื“ื™ื“ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทืœืข ืจื™ื˜ืฉืึทื‘ืึทืœ ื ื™ื˜-ื™ืกืžืึธืจืคื™ืง ืฉื˜ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื‘ืœืึทื˜ ื‘ื•ื™ื ืื•ืŸ GC ืื™ื ื”ืึทืœื˜ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก.
  • ืื™ืŸ ื“ื™ C ++ API, ืึทืŸ ืขืงืกื˜ืจืข "ื ืึธืขืงืกืกืขืคึผื˜" ืื™ื– ืคืึทืจืคืขืกื˜ื™ืงื˜, ื ืึธืš ืึธื•ื•ืขืจืœืึธืึทื“ืก ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืคึฟืึทืจ ื“ื™ "ืœื•ื™ืคึฟืขืจ :: ืžืขืงืŸ ()" ืื•ืคึฟืŸ, ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื‘ืึทืคืขืจื– ืื™ื– ืกืคึผืขืจื“ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ "ืกื˜ื“:: ืฉื˜ืจื™ืงืœ" ืฆื• ืขื ืฉื•ืจ ืึทืœื™ื™ื ืžืึทื ื˜. (ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืึทืจ CLANG libstdc ++).
  • ื ืจืึทื’ืจืขืฉืึทืŸ ืื™ืŸ ื“ื™ ื’ืจืึธื‘ ื‘ืœืึทื˜ ืกืคึผื™ืœื™ื ื’ ืึทืœื’ืขืจื™ื“ืึทื (ืกืขืœืขืงื˜ื™ื•ื• ืึทืจื•ื™ืกื•ื•ืึทืจืฃ ืคื•ืŸ ื’ืขื‘ื™ื˜ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ืœืขื˜ืขืจ) ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ื“ื•ืจืš ืึท ื–ืขืœื˜ืŸ ืื•ืžื’ืขืจื™ื›ื˜ MDBX_PROBLEM ื˜ืขื•ืช ื•ื•ืขืŸ ื˜ืฉืึทื ื’ื™ื ื’ ื“ืึทื˜ืŸ ืื™ืŸ ืจื™ื–ื™ืง ื˜ืจืึทื ื–ืึทืงืฉืึทื ื– ืื™ื– ื™ืœื™ืžืึทื ื™ื™ื˜ืึทื“.
  • ื ืคืึทืกื™ื ื’ ืคึผืจืึธื‘ืข ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืžื™ื˜ ื“ื™ ืึทื“ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื˜ืฉืขืงืก ืฆื• ืขื ืฉื•ืจ ืคืขืกื˜ืงื™ื™ึทื˜ ืื™ืŸ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืคื•ืŸ ื™ื ื˜ืขื ืฉืึทื ืึทืœ ืฉืขื“ื™ืงืŸ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก.
  • ืคืึทืจืคืขืกื˜ื™ืงื˜ ืžื™ื ืขืจื•ื•ืขืจื˜ื™ืง ื•ื•ืึธืจื ื™ื ื’ื– UndefinedBehaviorSanitizer ืื•ืŸ ืงืึทื•ื•ืขืจื™ื˜ื™ ืกืงืึทืŸ ื™ืฉื•ื–.
  • ืคืึทืจืคืขืกื˜ื™ืงื˜ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ ืื•ืŸ ื ื™ื˜ ืžืขืจ ื’ืขื•ื•ื™ื™ื ื˜ ื™ื ืขืจืœืขืš ืคืึธืŸ "P_DIRTY" ืื™ืŸ ื ืขืกื˜ืขื“ ื‘ืœืขื˜ืขืจ ื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ื™ืœื“ืขืจ ื‘ืืฉืืคืŸ ื“ื•ืจืš ืขืœื˜ืขืจืข ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง.
  • ืื™ืŸ ืงืžืึทืงืข ืกืงืจื™ืคึผืก, ื“ื™ ื–ื•ื›ืŸ ืคึฟืึทืจ ืงืึทืžืคึผื™ื™ืœืขืจ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืคืืจืœืื ื’ื˜ ืคึฟืึทืจ ืœื˜ืึธ (ืœื™ื ืง ืฆื™ื™ื˜ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ) ืื™ื– ื™ืžืคึผืจื•ื•ื•ื“.
  • ื“ื™ ืžืึทืงืกื™ืžื•ื ื ื•ืžืขืจ ืคื•ืŸ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืœื™ื™ืขื ืขืจ ืื™ื– ื’ืขื•ื•ืืงืกืŸ ืฆื• 32767.
  • ื™ืžืคึผืจื•ื•ื•ื“ ืคืึธืจืฉื˜ืขืœื•ื ื’ ื•ื•ืขืŸ ื ื™ืฆืŸ Valgrind ืื•ืŸ AddressSanitizer.
  • ืื•ื™ืฃ Windows, ื“ื™ ืจืขืงื•ืจืกื™ื•ื•ืข ื ื•ืฆืŸ ืคื•ืŸ SRW-ืฉืœืึธืก ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ ืื™ืŸ MDBX_NOTLS ืžืึธื“ืข (ืึธืŸ ื ื™ืฆืŸ ืคืึธื“ืขื ื”ื™ื’ืข ืกื˜ืึธืจื™ื“ื–ืฉ) ืื™ื– ื™ืœื™ืžืึทื ื™ื™ื˜ืึทื“, ื‘ืึธืึธื˜ื™ื“ ื“ื•ืจ ืื™ื– ืคืึทืจืคืขืกื˜ื™ืงื˜ ืื•ื™ื‘ ื“ื™ ืกื™ืกื˜ืขื ืฆื™ื™ื˜ ืื™ื– ื’ืขื‘ื™ื˜ืŸ, WSL1 ืื•ืŸ WSL2 ื“ื™ื˜ืขืงืฉืึทืŸ ืื™ื– ื™ืžืคึผืจื•ื•ื•ื“ ืื•ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืขืคืขื ืขืŸ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ื™ืฃ ืคึผืœืึทืŸ 9 ืžืึธื•ื ื˜ืขื“ ื“ื•ืจืš DrvFS ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ.
  • ืื™ืŸ ื’ืึทื ืฅ, ืžืขืจ ื•ื•ื™ 160 ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืฆื• 57 ื˜ืขืงืขืก, ~ 5000 ืฉื•ืจื•ืช ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ, ~ 2500 ื–ืขื ืขืŸ ืื•ื™ืกื’ืขืžืขืงื˜.

ืื™ืš ื•ื•ืึธืœื˜ ืกืคึผืขืฆื™ืขืœ ื“ืึทื ืงืขืŸ ื“ื™ ืขืจื™ื’ืึธืŸ ืคึผืจื•ื™ืขืงื˜ ืžืึทื ืฉืึทืคึฟื˜ (ืขื˜ื”ืขืจืขื•ื ื™ืงืึธื•ืกื™ืกื˜ืึทื) ืคึฟืึทืจ ื–ื™ื™ืขืจ ื”ื™ืœืฃ ืื™ืŸ ื˜ืขืกื˜ื™ื ื’ ืื™ืŸ ืขืงืกื˜ืจืขื ื ื•ืฆืŸ ืกื™ื ืขืจื™ืึธื•ื–. ืขืก ืื™ื– ื‘ืึทื˜ื™ื™ื˜ื™ืง ืึทื– ืื™ืŸ ืคื™ื ืฃ ื—ื“ืฉื™ื ื–ื™ื ื˜ ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ libmdbx v0.10.0, ืžื™ื˜ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ืึทื ื“ ืคื•ืŸ 1-2 ื˜ื‘ ืื™ืŸ ื™ืขื“ืขืจ ืขืจื™ื’ืึธืŸ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ (ื’ืขื ื•ืฆื˜ ืื•ื™ืฃ 7% ืคื•ืŸ ืขื˜ื”ืขืจืขื•ื ื ืึธื•ื“ื–), ื‘ืœื•ื™ื– ื“ืจื™ื™ ืจื™ืคึผืึธืจืฅ ืคื•ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ืงืึธืจื•ืคึผืฆื™ืข ื–ืขื ืขืŸ ื‘ืืงื•ืžืขืŸ, ืึทืœืข ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ืคืืจื’ืขืงื•ืžืขืŸ ืจืขื›ื˜ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกื™ื‘ื•ืช, ืื•ืŸ ื ื™ืฉื˜ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืขืจืจืึธืจืก: ืื™ืŸ ืฆื•ื•ื™ื™ ืงืึทืกืขืก ื“ื™ ืกื™ื‘ื” ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืึทืจืึทืŸ ืคื™ื™ืœื™ืขืจื–, ืื™ืŸ ื“ื™ ื“ืจื™ื˜ ืึท ื˜ืขื•ืช ืื™ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ืึทื˜ืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืกืึทื‘ืกื™ืกื˜ืึทื ื ื™ืฆืŸ BTRFS.

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’