Tom qab tsib xyoos ntawm kev txhim kho, qhov thib ob libmdbx 1.0 tso tawm tus neeg sib tw tau tshaj tawm

Muaj rau kev ntsuam xyuas tus neeg sib tw thib ob rau kev tso tawm tsev qiv ntawv libmdx nrog rau kev siv cov kev ua tau zoo, compact embedded key-value database. Tam sim no version (0.5) yog ib qho kev tso 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. libmdbx code faib los ntawm muaj ntawv tso cai raws li OpenLDAP Public License.

Lub tsev qiv ntawv MDBX yog qhov kho kom zoo dua qub los ntawm LMDB - Kev lag luam kos DBMS ntawm chav kawm "tus nqi tseem ceeb" raws li tsob ntoo B+ tsis muaj proactive log, uas tso cai rau ntau cov txheej txheem los ua haujlwm sib tw thiab ua tau zoo nrog cov ntaub ntawv hauv zos sib koom (tsis yog network). Nyob rau hauv lem, MDBX yog sai thiab ntau txhim khu kev qha tshaj LMDB, thiab nyob rau tib lub sij hawm 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.

Qhov sib txawv tseem ceeb tshaj plaws ntawm MDBX thiab LMDB:

  • 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 cov qauv ntim 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.

Lub libmdbx tso tawm tus neeg sib tw yog qhov tshwm sim ntawm kev txiav txim siab hauv lub Yim Hli 2019 los cais MDBX thiab MithrilDB cov haujlwm. Nyob rau 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 macOS 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.
  • Cov cai tau ua kom huv si siv Undefined Behavior Sanitizer thiab Chaw Nyob Sanitizer, tag nrho cov lus ceeb toom thaum tsim nrog "-Wpedantic", tag nrho cov lus ceeb toom Coverity Static Analyzer, thiab lwm yam.
  • Hloov tshiab API piav qhia.
  • Kev sib koom ua ke (kev sib koom ua ke) ntawm qhov chaws kom yooj yim ntawm kev kos.
  • 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 Apache 2.0 daim ntawv tso cai, tsis yog OpenLDAP Public License).
  • Kev sib cais tsis txhob muaj kev tsis sib haum xeeb, qhia paub tseeb dua thiab ua kom muaj kev ywj pheej rau cov haujlwm.

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 them nyiaj yug rau muab cov ntaub ntawv tso rau ntawm ntau qhov kev tshaj tawm heterogeneous: HDD, SSD thiab lub cim xeeb tsis hloov pauv.
  • Cov tswv yim zoo 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.
  • Kev xaiv siv WAL thiab txhim kho kev ua tau zoo hauv cov xwm txheej sau ntawv nrog cov ntaub ntawv kev ntseeg siab.
  • Lazy catch-up ua cov ntaub ntawv rau disks.

Tau qhov twg los: opennet.ru

Ntxiv ib saib