Pagkatapos ng limang taon ng pag-unlad, ang pangalawang kandidato sa paglabas ng libmdbx 1.0 ay nai-publish

Magagamit para sa pagsubok sa pangalawang kandidato para sa mga release ng library libmdbx sa pagpapatupad ng isang mataas na pagganap, compact na naka-embed na key-value database. Ang kasalukuyang bersyon (0.5) ay isang teknikal na paglabas, na minarkahan ang pagkumpleto ng anumang mga pagpapabuti at ang paglipat sa yugto ng pampublikong panghuling pagsubok at pagpapapanatag, kasama ang kasunod na pagbuo ng unang buong paglabas ng library. libmdbx code ipinamahagi ni lisensyado sa ilalim ng OpenLDAP Public License.

Ang MDBX library ay isang makabuluhang binagong tinidor mula sa LMDB β€” transactional na naka-embed na DBMS ng "key-value" na klase batay sa puno B+ wala aktibong pag-log, na nagpapahintulot sa mga multi-threaded na proseso na gumana nang mapagkumpitensya at mahusay sa isang lokal na nakabahaging (hindi network) na database. Sa turn, ang MDBX ay mas mabilis at mas maaasahan kaysa sa LMDB, at sa parehong oras ay pinapanatili ang lahat ng mga pangunahing tampok ng ninuno nito, tulad ng ACID at hindi nakaharang na mga pagbabasa na may linear scaling sa mga CPU core.

Ang pinakamahalagang pagkakaiba sa pagitan ng MDBX at LMDB:

  • Sa pangunahin, mas binibigyang pansin ang kalidad ng code, pagsubok at awtomatikong pagsusuri.
  • Makabuluhang higit na kontrol sa panahon ng operasyon, mula sa pagsuri ng mga parameter hanggang sa panloob na pag-audit ng mga istruktura ng database.
  • Auto-compactification at awtomatikong pamamahala ng laki ng database.
  • Isang format ng database para sa 32-bit at 64-bit assemblies.
  • Pagtatantya ng mga dami ng sample ayon sa mga saklaw (pagtatantya ng query ng hanay).
  • Suporta para sa mga key na dalawang beses na kasing laki ng mga pancake at laki ng pahina ng database na napipili ng user.

Ang libmdbx release candidate ay resulta ng isang desisyon na ginawa noong Agosto 2019 upang paghiwalayin ang mga proyekto ng MDBX at MithrilDB. Kasabay nito, nagpasya ang libmdbx na alisin ang (makatuwirang) maximum na teknikal na utang at patatagin ang library. Sa katunayan, 2-3 beses na mas marami ang nagawa sa itinalagang direksyon kaysa sa naunang tinantiya at pinlano:

  • Naipatupad na ang suporta para sa macOS at second-tier platform: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Maaaring idagdag ang suporta ng AIX at HP-UX kung kinakailangan.
  • Ang code ay na-sanitize gamit ang Undefined Behavior Sanitizer at Address Sanitizer, lahat ng babala kapag nagtatayo gamit ang "-Wpedantic", lahat ng Coverity Static Analyzer na babala, atbp. ay inalis.
  • Update Mga paglalarawan ng API.
  • Pagsasama-sama (pagsasama-sama) ng source code para sa kadalian ng pag-embed.
  • suporta sa CMake.
  • Suporta para sa mga nested na transaksyon.
  • Paggamit ng bootid upang matukoy kung ang OS ay nag-reboot (marumi database stop).
  • End-to-end na pagbibilang ng na-update/lumang mga pahina at pinalawig na impormasyon ng transaksyon.
  • Opsyon MDBX_ACCEDE para sa pagkonekta sa isang bukas na database sa compatible mode.
  • Gamitin OFD blocking kapag available.
  • Mainit na backup sa pipe.
  • Pinasadyang naka-optimize na internal sorting algorithm (hanggang 2-3 beses na mas mabilis kaysa sa β€œqsort()” at hanggang 30% na mas mabilis kaysa sa β€œstd::sort()”).
  • Ang maximum na haba ng key ay nadagdagan.
  • Awtomatikong kontrol ng read ahead (diskarte sa pag-cache ng file ng database sa memorya).
  • Mas agresibo at mas mabilis na auto-compactification.
  • Isang mas pinakamainam na diskarte para sa pagsasama-sama ng mga B+ tree page.
  • Kontrolin ang mga hindi lokal na file system (NFS, Samba, atbp.) upang maiwasan ang pagkasira ng database kung ginamit nang hindi tama.
  • Ang hanay ng mga pagsubok ay pinalawak.

Ang pagbuo ng "susunod" na bersyon ng libmdbx ay magpapatuloy bilang isang hiwalay na proyekto MithrilDB, habang ang development vector ng "kasalukuyang" bersyon ng MDBX ay naglalayong i-freeze ang feature set at patatagin ito. Ang desisyon na ito ay ginawa para sa tatlong dahilan:

  • Ganap na hindi tugma: Ang MithrilDB ay nangangailangan ng ibang (hindi tugma) na format ng file ng database at ibang (hindi tugma) na API upang ipatupad ang lahat ng nakaplanong feature.
  • Bagong source code: Ang MithrilDB source code ay ginawang lisensyado na independyente mula sa LMDB, at ang proyekto mismo ay pinlano na i-publish sa ilalim ng ibang lisensya (inaprubahan ng OSI Lisensya ng Apache 2.0, hindi OpenLDAP Public License).
  • Ang paghihiwalay ay umiiwas sa potensyal na kalituhan, nagpapakilala ng higit na katiyakan at nagsisiguro ng isang malayang landas para sa mga proyekto.

Ang MithrilDB, tulad ng MDBX, ay nakabatay din sa puno B+ at magtatampok din ng napakataas na pagganap, habang inaalis ang ilang pangunahing kawalan ng MDBX at LMDB. Sa partikular, ang problema ng "mahabang pagbabasa", na nagpapakita ng sarili bilang "pamamaga" ng database dahil sa katotohanan na ang pagpoproseso ng basura ay hinarangan ng mahabang mga transaksyon sa pagbabasa, ay aalisin. Kasama sa mga bagong feature ng MithrilDB ang:

  • Suporta para sa paglalagay ng database sa ilang heterogenous media: HDD, SSD at non-volatile memory.
  • Mga pinakamainam na diskarte para sa "mahalaga" at "mababang halaga", para sa "mainit", "mainit" at "malamig" na data.
  • Paggamit ng Merkle tree upang subaybayan ang integridad ng database.
  • Opsyonal na paggamit ng WAL at makabuluhang pinahusay na pagganap sa mga script-intensive na sitwasyon na may mga garantiya sa integridad ng data.
  • Tamad na catch-up na gumawa ng data sa mga disk.

Pinagmulan: opennet.ru

Magdagdag ng komento