Ho lokolloa ha DBMS e kenyellelitsoeng ea tšebetso e phahameng ea libmdbx 0.10.4 le libfpta 0.3.9

Laeborari ea libmdbx 0.10.4 (MDBX) e lokollotsoe ka ho kengoa ts'ebetsong ha database ea boleng ba bohlokoa ba compact compact e kenyellelitsoeng, le laebrari e amanang le libfpta 0.3.9 (FPTA), e sebelisang tlhahiso ea tabular ea data e nang le li-index tsa bobeli le tse kopaneng. ka holim'a MDBX. Lilaebrari ka bobeli li ajoa tlas'a laesense e amohetsoeng ke OSI. Litsamaiso tsohle tsa hajoale tsa ts'ebetso le meaho li tšehetsoa, ​​​​hammoho le Serussia Elbrus 2000.

Ho tloha khale, libmdbx ke ts'ebetso e tebileng ea LMDB DBMS 'me e phahametse moholo-holo oa eona ka ho tšepahala, ho beha likarolo le ts'ebetso. Ha e bapisoa le LMDB, libmdbx e hatisa haholo boleng ba khoutu, botsitso ba API, liteko le licheke tse ikemetseng. Ho fanoe ka thuso ea ho lekola bots'epehi ba sebopeho sa database se nang le bokhoni bo itseng ba ho hlaphoheloa.

Bohlale ba thekenoloji, libmdbx e fana ka ACID, serialization ea phetoho e matla, le ho bala ho sa thibeleng ka sekhahla sa mela ho li-CPU cores. Boikemisetso ba boiketsetso, taolo ea boholo ba database, le khakanyo ea lipotso tse fapaneng lia tšehetsoa. Ho tloha ka 2016, merero e tšehelitsoe ka lichelete ke Positive Technologies mme ho tloha ka 2017 esale e sebelisoa lihlahisoa tsa eona.

libmdbx e fana ka C++ API, hammoho le litlamo tsa puo tse tšehelitsoeng ke batho ba chesehang bakeng sa Rust, Haskell, Python, NodeJS, Ruby, Go, le Nim. Bakeng sa libfpta, ke feela tlhaloso ea API e fumanehang phatlalatsa ka sebopeho sa faele ea hlooho ea C/C++.

Lintlafatso tse kholo, lintlafatso le litokiso li ekelitsoe ho tloha litabeng tse fetileng ka la 9 Motšeanong:

  • E nolofalletsa meaho e ka hlahisoang hape.
  • Lokisitse bothata boo, maemong a sa tloaelehang haholo, ho ka ba le loop/qhoaha nakong ea boitlamo ba thekiso. Bothata bo ile ba hlokomeloa ke litsebi tsa Positive Tecnologies nakong ea tlhahlobo ea ka hare ea lihlahisoa tsa bona.
  • Liteko li ntlafalitsoe mme maemo a liteko a atolositsoe ho lekola libaka tsohle tse fihlellehang tseo e seng tsa isomorphic tsa sefate sa leqephe le likahare tsa GC ka har'a database.
  • Ho C++ API, "noexcept" e eketsehileng e se e lokisitsoe, ho kenyelitsoe meroalo e mengata bakeng sa mokhoa oa "cursor::erase()", ts'ebetsong ea li-buffers e sirelelitsoe ts'ebeliso ea "std:: string" ho netefatsa ho lumellana. (e loketse CLANG libstdc++).
  • Khatelo-pele leqepheng le litšila la ho qhala algorithm (ejection e khethiloeng ea maqephe a fetotsoeng ea database) e bonahalitsoeng ke phoso e sa lebelloang e sa lebelloang ea MDBX_PROBLEM ha o fetola data litšebelisanong tse kholo e felisitsoe.
  • Tlhahlobo ea mekhahlelo e ile ea etsoa ka ho eketsoa ha licheke tse ngata ho netefatsa botsitso ha ho ka ba le tšenyo ea ka boomo ho database.
  • Litlhokomeliso tse nyane tse tsitsitseng UndefinedBehaviorSanitizer le litaba tsa Coverity Scan.
  • E tsitsitse ho hlahloba folakha ea khale 'me ha e sa sebelisoa "P_DIRTY" maqepheng a behiloeng ka har'a litšoantšo tsa database tse entsoeng ke mefuta ea khale ea pokello ea libuka.
  • Lingoliloeng tsa CMake, patlo ea likarolo tsa komporo e hlokahalang bakeng sa LTO (ho ntlafatsa nako ea khokahano) e ntlafalitsoe.
  • Palo e phahameng ea babali ka nako e le 'ngoe e ekelitsoe ho 32767.
  • Ts'ebetso e ntlafetseng ha u sebelisa Valgrind le AddressSanitizer.
  • Ho Windows, ts'ebeliso e iphetang ea SRW-lock ha e sebetsa ka mokhoa oa MDBX_NOTLS (ntle le ho boloka khoele ea lehae) e felisitsoe, tlhahiso ea bootid e lokisitsoe haeba nako ea sistimi e fetohile, tlhahlobo ea WSL1 le WSL2 e ntlafalitsoe, le bokhoni ba ho bula database ho Moralo oa 9 o kentsoeng ka DrvFS o kentsoe.
  • Ka kakaretso, liphetoho tse fetang 160 li entsoe ho lifaele tsa 57, ~ mela ea 5000 e kenyelelitsoe, ~ 2500 e hlakotsoe.

Ka ho khetheha ke rata ho leboha sehlopha sa morero oa Erigon (Ethereum ecosystem) bakeng sa thuso ea bona ea ho etsa liteko maemong a feteletseng a tšebeliso. Ke habohlokoa hore likhoeling tse hlano ho tloha ha ho lokolloa libmdbx v0.10.0, e nang le boitsebiso bo bongata ba 1-2 TB ho kenngoa ka 'ngoe ea Erigon (e sebelisoang ho 7% ea li-node tsa Ethereum), ho ile ha amoheloa litlaleho tse tharo feela tsa bobolu ba database, kaofela. e ileng ea etsahala ka lebaka la mabaka a ka ntle, eseng liphoso tsa software: maemong a mabeli sesosa e ne e le ho hlōleha ha RAM, ka lekhetlo la boraro phoso ea ho tsosolosa data ka mokhoa o itseng oa tsamaiso ea polokelo e sebelisang BTRFS.

Source: opennet.ru

Eketsa ka tlhaloso