Paglabas ng compact na naka-embed na DBMS libmdbx 0.9.1

Inilabas bersyon ng library 0.9.1 libmdbx (MDBX) na pagpapatupad ng isang high-performance, compact na naka-embed na key-value database. Ang libmdbx code ay ipinamahagi sa ilalim ng lisensya OpenLDAP Public License.

Ang kasalukuyang bersyon ay isang kompromiso sa pagitan ng intensyon na maglabas ng isang pangmatagalang stable na bersyon 1.0 na may ganap na suporta sa C++ at ang pag-aatubili na antalahin ang mga release dahil sa hindi kahandaan para sa pagyeyelo ng bagong C++ API. Ang ipinakita na release ay ang resulta ng 9 na buwan ng trabaho na naglalayong patatagin ang library at pahusayin ang kakayahang magamit nito, at kasama rin ang isang paunang bersyon C++ API.

Ang library ng libmdbx ay hindi lamang isang "tinidor", ngunit isang radikal na muling idisenyo na inapo LMDB β€” transactional na naka-embed na DBMS ng "key-value" na klase batay sa puno B+ wala aktibong pag-log, na nagbibigay-daan sa mga multi-threaded na proseso na gumana nang mapagkumpitensya at mahusay sa isang lokal na nakabahaging (hindi network) na database nang walang dedikadong proseso ng server. libmdbx sa panimula lumalawak kakayahan ng ninuno nito, habang sabay na inaalis o pinapagaan ang mga disadvantages. Kasabay nito, ayon sa mga developer, ang libmdbx ay medyo mas mabilis at mas maaasahan kaysa sa LMDB.

Iminumungkahi ng libmdbx ACID, mahigpit na serialization ng mga pagbabago at hindi nakaharang na pagbabasa na may linear scaling sa mga CPU core. Mga resulta ng pagsubok sa pagganap (pagpapadala ng mga parallel read/search request sa 1-2-4-8 na mga thread sa isang CPU i7-4600U na may 2 pisikal na core sa 4-thread HyperThread mode):

Paglabas ng compact na naka-embed na DBMS libmdbx 0.9.1

Ang pinakamahalagang pagkakaiba sa pagitan ng MDBX at LMDB:

  • Sa pangunahin, mas binibigyang pansin ang kalidad ng code, pagkakapare-pareho ng API, 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 dobleng haba ng mga key at laki ng pahina ng database na napipili ng user.
  • Isang utility para sa pagsuri sa integridad ng istraktura ng database na may ilang mga kakayahan sa pagbawi.

Pangunahing pagbabago at pagpapabuti pagkatapos naunang balita sa pagpapakilala ng bersyon 0.5 noong Enero 2020:

  • Isang bukas na sistema ang nilikha para sa agarang suporta at mga sagot sa mga tanong. Grupo ng telegrama.
  • Mahigit sa isang dosenang mga pagkakamali at pagkukulang ang naalis (tingnan. baguhin ang log).
  • Maraming typo at spelling error ang naayos, at maraming cosmetic improvements ang nagawa.
  • Pinalawak ang mga senaryo ng pagsubok.
  • Suporta para sa iOS, Android, buildroot, musl, uClibc, WSL1 ΠΈ Alak.
  • Inilabas ang preview ng C++ API isang header file.
  • Built-in na dokumentasyon sa Doxygen format at awtomatikong pagbuo Online na dokumentasyon.
  • Ang awtomatikong pagbuo ng mga archive na may pinagsama-samang pinagmulang mga teksto ay ibinigay.
  • Nagdagdag ng suporta para sa paghahanda ng mga transaksyon at mga cursor, mga konteksto ng user para sa mga transaksyon at mga cursor.
  • Ang mga karagdagang pamamaraan ay ipinatupad upang kontrolin ang integridad ng referential sa mga snapshot ng B+tree MVCC.
  • Nagdagdag ng suporta para sa pagsuri ng MVCC snapshot ng database, na maa-access sa anumang meta page na may kakayahang lumipat para sa pagbawi.
  • Ipinatupad ang suporta para sa muling pagbubukas ng database mula sa isang proseso para sa mga layunin ng pagsubok, atbp.
  • Ipinatupad ang awtomatikong pagproseso ng opsyong MDBX_NOSUBDIR kapag nagbubukas ng database.
  • Nagdagdag ng mga function para sa pagbuo ng mga integer key mula sa mga floating point value at JavaScript na "universal" na numero.
  • Sa kabuuan, 430 na pagbabago ang ginawa na nakakaapekto sa 93 na mga file, higit sa 25 libong mga linya ang idinagdag, higit sa 8.5 libong mga linya ang tinanggal.

Ang kasunod na pagbuo ng libmdbx ay tututuon sa panghuling C++ API, karagdagang pagpapatatag ng base code, pagpapabuti ng kakayahang magamit ng library, at packaging para sa mga sikat na pamamahagi ng Linux. Kabilang sa mga iminungkahing pagpapabuti, ito ay nagkakahalaga ng pagpuna sa suporta para sa mga susi sa format MessagePack.

Pinagmulan: opennet.ru

Magdagdag ng komento