Kamora lilemo tse hlano tsa nts'etsopele, mokhethoa oa bobeli oa tokollo ea libmdbx 1.0 o phatlalalitsoe

Fumaneha bakeng sa ho leka mokhethoa oa bobeli bakeng sa tokollo ea laeborari libmdbx ka ho kenngwa tshebetsong ha polokelongtshedimosetso ya tshebetso e phahameng, e kentsweng ka kopanelo ya boleng ba bohlokwa. Phetolelo ea hajoale (0.5) ke tokollo ea botekgeniki, e tšoaeang ho phethoa ha lintlafatso life kapa life le ho fetela mokhahlelong oa tlhahlobo ea ho qetela ea sechaba le botsitso, ka mokhoa o latelang oa ho theha tokollo ea pele e felletseng ea laeborari. libmdbx khoutu ajoa ke e nang le laesense tlas'a OpenLDAP Public License.

Laeborari ea MDBX ke fereko e ntlafalitsoeng haholo ho tloha ho LMDB - DBMS e kentsoeng ea transaction ea sehlopha sa "key-value" e thehiloeng ho sefate B+ ntle le ho rema lifate ka potlako, e lumellang lits'ebetso tse nang le likhoele tse ngata ho sebetsa ka tlholisano le ka mokhoa o atlehileng le database e arolelanoang sebakeng sa heno (eseng marang-rang). Ka lehlakoreng le leng, MDBX e potlakile ebile e tšepahala ho feta LMDB, 'me ka nako e ts'oanang e boloka likarolo tsohle tsa bohlokoa tsa moholo-holo oa eona, joalo ka. ACID le ho bala ho sa thibeleng ho nang le linear scaling ho pholletsa le li-cores tsa CPU.

Phapang ea bohlokoahali lipakeng tsa MDBX le LMDB:

  • Ha e le hantle, ho lebisoa tlhokomelo e eketsehileng ho boleng ba khoutu, liteko le ho hlahloba ka mokhoa o itekanetseng.
  • Taolo e kholo nakong ea ts'ebetso, ho tloha ho li-parameter ho ea ho tlhahlobo ea kahare ea meaho ea database.
  • Boikemisetso bo ikemetseng le taolo ea boholo ba database.
  • Foromo e le 'ngoe ea database bakeng sa likopano tsa 32-bit le 64-bit.
  • Khakanyo ea melumo ea sampuli ho ea ka mefuta (khakanyo ea lipotso tse fapaneng).
  • Ts'ehetso ea linotlolo tse kholo ka makhetlo a mabeli ho feta li-pancakes le boholo ba leqephe la database le khethiloeng ke mosebelisi.

Mokhethoa oa tokollo ea libmdbx ke litholoana tsa qeto e entsoeng ka Phato 2019 ea ho arola merero ea MDBX le MithrilDB. Ka nako e ts'oanang, libmdbx e nkile qeto ea ho felisa (bohlale) mokoloto o moholo oa tekheniki le ho tsitsisa laeborari. Ebile, ho entsoe makhetlo a 2-3 ho feta moo ho neng ho hakanngoa le ho reriloe qalong:

  • Ts'ehetso ea li-platform tsa macOS le tsa boemo ba bobeli e kentsoe tšebetsong: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Tšehetso ea AIX le HP-UX e ka eketsoa ha ho hlokahala.
  • Khoutu e ile ea hloekisoa ho sebelisoa Undefined Behavior Sanitizer le Address Sanitizer, litemoso tsohle ha u haha ​​ka "-Wpedantic", litemoso tsohle tsa Coverity Static Analyzer, joalo-joalo li ile tsa tlosoa.
  • Nchafatso Litlhaloso tsa API.
  • Ho kopanya (kopanyo) ea khoutu ea mohloli molemong oa ho kengoa habonolo.
  • CEtsa tšehetso.
  • Ts'ehetso bakeng sa litšebelisano tse entsoeng sehlaheng.
  • Ho sebelisa bootid ho fumana hore na OS e se e qalile hape (setopo se litšila sa database).
  • Palo ea ho qetela ea maqephe a ntlafalitsoeng / a khale le tlhaiso-leseling e atolositsoeng ea transaction.
  • Kgetho MDBX_ACCEDE bakeng sa ho hokela polokelongtshedimosetso e seng e butswe ka mokgwa o dumellanang.
  • Sebelisa OFD thibela ha e fumaneha.
  • Backup e chesang ka phala.
  • Algorithm e ikhethileng ea ho hlopha ka hare (ho fihla ho makhetlo a 2-3 ka potlako ho feta "qsort()" le ho fihla ho 30% ka potlako ho feta "std::sort()").
  • Boholo ba bolelele ba senotlolo bo ekelitsoe.
  • Taolo ea othomathike ea ho bala pele (leano la ho boloka lifaele tsa database mohopolong).
  • Boikemisetso bo matla le bo potlakileng ho feta ba boiketsetso.
  • Leano le nepahetseng haholoanyane la ho kopanya maqephe a lifate tsa B+.
  • Taolo ea litsamaiso tsa lifaele tseo e seng tsa lehae (NFS, Samba, joalo-joalo) ho thibela tšenyo ea database haeba e sebelisoa hampe.
  • Sehlopha sa liteko se atolositsoe.

Ntlafatso ea mofuta oa "e latelang" oa libmdbx e tla tsoelapele joalo ka projeke e fapaneng MithrilDB, athe vector ea nts'etsopele ea mofuta oa "hajoale" oa MDBX e reretsoe ho homisa sete ea likarolo le ho e tsitsisa. Qeto ena e entsoe ka mabaka a mararo:

  • Ha e lumellane ho hang: MithrilDB e hloka mofuta o fapaneng (o sa lumellaneng) oa faele ea database le API e fapaneng (e sa lumellaneng) ho kenya tšebetsong likarolo tsohle tse reriloeng.
  • Khoutu e ncha ea mohloli: Khoutu ea mohloli oa MithrilDB e entsoe ka laesense e ikemetseng ho tsoa ho LMDB, mme projeke ka boeona e reriloe ho phatlalatsoa tlasa laesense e fapaneng (e amohetsoeng ke KAPA HAEBA Laesense ea Apache 2.0, che OpenLDAP Public License).
  • Karohano e qoba pherekano e ka bang teng, e hlahisa bonnete bo eketsehileng mme e tiisa tsela e ikemetseng bakeng sa merero.

MithrilDB, joalo ka MDBX, e boetse e thehiloe ho sefate B+ hape e tla ba le ts'ebetso e phahameng haholo, ha e ntse e tlosa mefokolo e mengata ea mantlha ea MDBX le LMDB. Haholo-holo, bothata ba "ho bala nako e telele", bo iponahatsang e le "ho ruruha" ha database ka lebaka la hore ts'ebetso ea lithōle e thibetsoe ke ho bala nako e telele, e tla felisoa. Likarolo tse ncha tsa MithrilDB li kenyelletsa:

  • Ts'ehetso ea ho beha database mecheng ea litaba tse fapaneng tse fapaneng: HDD, SSD le memori e sa fetoheng.
  • Mekhoa e nepahetseng ea "boleng" le "boleng bo tlaase", bakeng sa "hot", "mofuthu" le "bata" data.
  • Ho sebelisa sefate sa Merkle ho lekola botšepehi ba database.
  • Tšebeliso ea boikhethelo ea WAL le ts'ebetso e ntlafetseng haholo maemong a ngolang haholo a nang le tiisetso ea botšepehi ba data.
  • Ho botsoa ho kenya data ho li-disk.

Source: opennet.ru

Eketsa ka tlhaloso