Qhov thib ob libmdbx v1.0 tso tawm tus neeg sib tw tom qab tsib xyoos ntawm kev txhim kho.

tsev qiv ntawv libmdx yog ib tug tseem ceeb redesigned xeeb leej xeeb ntxwv ntawm LMDB - ib tug tsis tshua muaj-kev ua tau zoo, compact embedded key-value database.
Tam sim no version v0.5 yog kev tshaj tawm kev tshaj tawm, cim qhov ua tiav ntawm kev txhim kho thiab hloov mus rau theem ntawm kev sim pej xeem zaum kawg thiab ruaj khov, nrog rau kev tsim tom ntej ntawm thawj qhov kev tso tawm tag nrho ntawm lub tsev qiv ntawv.

LMDB yog ib tug zoo-paub kev lag luam embedded key-value DBMS raws li tsob ntoo B+ tsis muaj proactive log, uas tso cai rau ib tug swarm ntawm multi-threaded txheej txheem los ua hauj lwm sib tw thiab zoo heev nrog ib lub zos sib koom (tsis network) database. Nyob rau hauv lem, MDBX yog ceev thiab ntau txhim khu kev qha tshaj LMDB, thaum libmdbx khaws tag nrho cov tseem ceeb nta ntawm nws cov poj koob yawm txwv, xws li acid thiab tsis-thaiv nyeem nrog cov kab scaling hla CPU cores, thiab tseem ntxiv ntau qhov tshiab.

Ib qho kev piav qhia ntawm qhov sib txawv thiab kev txhim kho ntawm libmdbx txheeb ze rau LMDB tsim nyog ib tsab xov xwm cais (xav kom luam tawm ntawm HabrΓ© thiab Nruab Nrab). Ntawm no nws yog qhov tsim nyog los hais txog qhov tseem ceeb tshaj plaws thiab pom tau:

  • Hauv paus, kev saib xyuas ntau dua yog them rau cov lej zoo, kev sim thiab cov tshev tsis siv neeg.
  • Kev tswj hwm ntau dua thaum lub sijhawm ua haujlwm, los ntawm kev kuaj xyuas parameter mus rau kev tshawb xyuas sab hauv ntawm cov qauv database.
  • Auto-compactification thiab tsis siv neeg database loj tswj.
  • Ib hom ntawv database rau 32-ntsis thiab 64-ntsis sib dhos.
  • Kev kwv yees ntawm tus qauv loj los ntawm ntau yam (ntau cov lus nug kwv yees).
  • Kev them nyiaj yug rau cov yuam sij ob zaug qhov loj ntawm pancakes thiab cov neeg siv xaiv cov ntaub ntawv nplooj ntawv loj.

Tus neeg sib tw libmdbx tso tawm yog qhov tshwm sim ntawm qhov kev txiav txim siab (saib hauv qab) txhawm rau cais MDBX thiab MithrilDB cov haujlwm hauv lub Yim Hli 2019. Tib lub sijhawm, libmdbx tau txiav txim siab tshem tawm (tseem ceeb) cov nuj nqis siab tshaj plaws thiab ua kom lub tsev qiv ntawv ruaj khov. Qhov tseeb, 2-3 zaug ntau dua tau ua tiav hauv qhov kev taw qhia tshaj li qhov pib kwv yees thiab tau npaj tseg:

  • Kev them nyiaj yug rau Mac OS thiab theem thib ob platforms tau siv: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX thiab HP-UX kev txhawb nqa tuaj yeem muab ntxiv raws li xav tau.
  • Sanitated tus cai siv Undefined Behavior Sanitizer thiab Chaw Nyob Sanitizer, tshem tawm tag nrho cov lus ceeb toom thaum lub tsev nrog -Wpedantic, tag nrho cov Coverity Static Analyzer ceeb toom, thiab lwm yam.
  • Hloov tshiab API piav qhia.
  • Amalgamation ntawm qhov chaws code kom yooj yim embedding.
  • CMake kev them nyiaj yug.
  • Kev them nyiaj yug rau nested muas.
  • Siv lub bootid los txiav txim seb lub OS puas tau rebooted (qhuav kaw ntawm lub database).
  • Xaus-rau-kawg suav cov nplooj ntawv tshiab / qub thiab cov ntaub ntawv txuas ntxiv.
  • MDBX_ACCEDE kev xaiv los txuas mus rau ib qho uas twb qhib database hauv hom sib xws.
  • Siv OFD xauv raws li lawv muaj.
  • Kub thaub qab hauv cov yeeb nkab.
  • Tshwj xeeb optimized internal sorting algorithm (txog 2-3 zaug sai dua qsort() thiab mus txog 30% sai dua std::sort()).
  • Nce qhov ntev ntawm qhov tseem ceeb.
  • Tsis siv neeg tswj kev nyeem ua ntej (hauv-nco database file caching zoo).
  • Kev txhoj puab heev thiab ceev nws pib-compactification.
  • Lub tswv yim zoo dua rau kev sib koom ua ke B + nplooj ntawv ntoo.
  • Kev tswj cov ntaub ntawv tsis yog hauv zos (NFS, Samba, thiab lwm yam) los tiv thaiv cov ntaub ntawv puas yog siv tsis raug.
  • Expanded test suite.

Kev txhim kho ntawm "tom ntej" version ntawm libmdbx yuav txuas ntxiv ua ib qhov haujlwm cais MithrilDB, thaum txoj kev loj hlob vector ntawm "tam sim no" version ntawm MDBX yog tsom rau khov lub feature teeb thiab stabilizing. Qhov kev txiav txim siab no tau ua rau peb lub laj thawj:

  • Tag nrho incompatibility: MithrilDB yuav tsum muaj cov ntaub ntawv sib txawv (incompatible) database file format thiab ib qho sib txawv (incompatible) API los siv tag nrho cov kev npaj.
  • Cov cai tshiab: MithrilDB qhov chaws yog daim ntawv tso cai ywj pheej los ntawm LMDB, thiab qhov project nws tus kheej tau npaj los luam tawm raws li daim ntawv tso cai sib txawv (pom zoo los ntawm LOS YOG YOG daim ntawv tso cai Apache 2.0thiab tsis OpenLDAP Foundation).
  • Qhov kev sib cais tsis txhob muaj qhov tsis meej pem, muab qhov tseeb dua, thiab ua kom cov haujlwm muaj kev ywj pheej rau pem hauv ntej.

MithrilDB, zoo li MDBX, kuj yog raws li tsob ntoo B+ thiab tseem yuav yog tus cwj pwm los ntawm kev ua haujlwm siab heev, thaum tshem tawm ntau qhov tsis txaus ntseeg ntawm MDBX thiab LMDB. Tshwj xeeb, qhov teeb meem ntawm "ntev nyeem ntawv", uas tshwm sim nws tus kheej li "o" ntawm cov ntaub ntawv vim qhov tseeb tias cov khoom siv khib nyiab raug thaiv los ntawm kev nyeem ntawv ntev, yuav raug tshem tawm. Tshiab MithrilDB nta suav nrog:

  • kev txhawb nqa rau tso cov ntaub ntawv rau ntau qhov kev tshaj tawm heterogeneous: HDD, SSD thiab lub cim xeeb tsis hloov pauv.
  • Cov tswv yim zoo tshaj plaws rau "muaj txiaj ntsig" thiab "tus nqi qis", rau cov ntaub ntawv "kub", "sov" thiab "txias".
  • siv Merkle tsob ntoo los saib xyuas cov ntaub ntawv kev ncaj ncees.
  • xaiv tau siv WAL thiab ua tau zoo dua hauv cov xwm txheej sau ntawv thiab cov ntaub ntawv kev ntseeg siab.
  • Lazy catch-up fixation ntawm cov ntaub ntawv ntawm disks.

Tau qhov twg los: linux.org.ru ua

Ntxiv ib saib