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 sa paglabas ng aklatan libmdbx sa pagpapatupad ng isang mataas na pagganap, compact, naka-embed na key-value database. Ang kasalukuyang bersyon (0.5) ay isang maintenance release, na minarkahan ang pagkumpleto ng anumang mga pagpapabuti at ang paglipat sa pampublikong huling pagsubok at yugto ng stabilization, na sinusundan ng pagbuo ng unang buong release ng library. Ang libmdbx code ipinamahagi ni sa ilalim ng OpenLDAP Public License.

Ang MDBX library ay isang makabuluhang rewritten na tinidor ng LMDB — transactional na naka-embed na DBMS ng "key-value" na klase batay sa puno B+ wala aktibong pag-log, na nagpapahintulot sa mga multithreaded na proseso na gumana nang sabay-sabay at mahusay sa isang lokal na nakabahaging (hindi network) na database. Ang MDBX, sa kabilang banda, ay mas mabilis at mas maaasahan kaysa sa LMDB, habang pinapanatili ang lahat ng mga pangunahing tampok ng hinalinhan nito, tulad ng ACID at walang harang na 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 kandidato sa pagpapalabas ng libmdbx ay resulta ng desisyon noong Agosto 2019 na paghiwalayin ang mga proyekto ng MDBX at MithrilDB. Sa libmdbx, ang layunin ay alisin ang mas maraming teknikal na utang hangga't maaari at patatagin ang library. Sa katunayan, dalawa hanggang tatlong beses na mas maraming gawain ang nagawa sa direksyong ito kaysa sa orihinal na tinantiya at pinlano:

  • Ipinatupad ang suporta macOS at mga platapormang pangalawang antas: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Maaaring idagdag ang suporta para sa AIX at HP-UX kung kinakailangan.
  • Ang code ay na-sanitize gamit ang Undefined Behavior Sanitizer at Address Sanitizer, ang lahat ng babala kapag nagtatayo gamit ang "-Wpedantic" ay inalis, gayundin ang lahat ng mga babala ng Coverity Static Analyzer, atbp.
  • 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 na-update/lumang pagbibilang ng 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.
  • Isang espesyal na 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.
  • Pagsubaybay sa mga hindi lokal na file system (NFS, Samba, atbp.) upang maiwasan ang pagkasira ng database dahil sa hindi wastong paggamit.
  • 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 nakakatulong na maiwasan ang potensyal na kalituhan, magbigay ng higit na kalinawan at matiyak ang mga independiyenteng landas ng pag-unlad 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 mga database sa ilang iba't ibang uri ng media: HDD, SSD, at non-volatile memory.
  • Mga pinakamainam na diskarte para sa data na "high-value" at "low-value", para sa "hot", "warm" at "cold" na data.
  • Paggamit ng Merkle tree upang subaybayan ang integridad ng database.
  • Opsyonal na paggamit ng WAL at makabuluhang mas mataas na pagganap sa mga sitwasyong masinsinang pagsulat na may mga garantiya sa integridad ng data.
  • Lazy catch-up data commit sa mga disk.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster