La eldono de libmdbx 0.13.3 (MDBX) estis publikigita, efektivigante alt-efikecan kompaktan enigitan ŝlosilvaloran datumbazon. La libmdbx-kodo estas distribuita sub la permesilo Apache 2.0. Ĉiuj nunaj operaciumoj kaj arkitekturoj estas subtenataj, same kiel la rusa Elbrus 2000. libmdbx ofertas evoluintan API por C++, kaj ankaŭ ligojn subtenatajn de entuziasmuloj al la lingvoj Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. , Deno, Scala.
Historie, libmdbx estas profunda reverkado de la LMDB DBMS kaj superas sian prapatron en fidindeco, funkcioj kaj rendimento. Kompare kun LMDB, libmdbx multe emfazas kodkvaliton, API-stabilecon, testadon kaj aŭtomatigitajn kontrolojn. Ilo por kontroli la integrecon de la datumbaza strukturo kun kelkaj reakiro-kapabloj estas liverita. Teknologie, libmdbx ofertas ACID, fortan ŝanĝan seriigon kaj ne-blokantajn legadojn kun lineara skalo trans CPU-kernoj. Aŭtomata kompaktigo, aŭtomata datumbaza grandeco-administrado kaj interval-demanda takso estas subtenataj.
Ĉefaj ŝanĝoj:
- La branĉo 0.13.x ricevis stabilan statuson. Disvolviĝo de la branĉo 0.14.x komenciĝis.
- La funkcio mdbx_cursor_count_ex() estis aldonita al la C API, kiu ebligas al vi akiri ambaŭ la nombron da multvaloroj respondaj al la nuna ŝlosilo kaj informojn pri la nestita arbo konservanta ĉi tiujn valorojn.
- La metodo mdbx::txn::make_broken(), simila al mdbx_txn_break(), estis aldonita al la C++ API.
- La iloj mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat efektivigas registradon de eraroj, avertoj kaj gravaj mesaĝoj de libmdbx.
- Ŝanĝo de Konduto:
- Kiam GC-profilado estas ebligita (konstruo kun la opcio MDBX_ENABLE_PROFGC=ON), la CPU-tempo pasigita kunfandado de paĝlistoj nun estas kalkulita, t.e. por ke la funkcio pnl_merge() funkciu.
- En la testa ilo, la datumreĝima valoro estis renomita de data.dups al data.multi.
- Plibonigita ŝlosila longo kontrolo ene cursor_seek ().
- Se la uzanto ne specifas la realan valoron uzante mdbx_env_set_option(MDBX_opt_txn_dp_limit), tiam la malpura-paĝa-limo estas ĝustigita ĉe la komenco de ĉiu nenestita skribtransakcio, surbaze de la kvanto de disponebla RAM kaj la grandeco de la datumbazo.
- En la MDBX_NOSTICKYTHREADS-reĝimo, transigi/interrompi nestitajn transakciojn de iu ajn fadeno/fadeno estas permesita.
- Kiam oni provas ruli nestitajn transakciojn en MDBX_WRITEMAP-reĝimo, protokolado estas farita kaj la MDBX_INCOMPATIBLE-eraro estas resendita.
- En la C++ API, en konstrukciistoj/inicialigiloj kaj metodoj rilataj al la formado de datumbaza geometrio, nur defaŭltaj valoroj estas uzataj defaŭlte.
- Ene de mdbx_env_set_geometry(), la heŭristiko por elektado de la datumbazaj geometriaj parametroj petitaj de la uzanto "defaŭlte" estis plibonigitaj.
- Korektoj:
- Korektis regreson de la mutekso ne malŝlosita kiam oni provas fermi dbi-priskribilon denove, inkluzive kiam oni provas eksplicite fermi la priskribilon post forigo de la tabelo asociita kun ĝi.
- Fiksa regreso de nestita/dupsort kursora stato post enmetado de datumoj en MDBX_APPEND-reĝimo.
- Subteno por akiri boot_id kiam vi laboras ene de LXC-ujo.
- Riparis problemon kun malĝusta prilaborado de provo komenci nestitan legan transakcion. La eraro MDBX_EINVAL nun estas resendita en ĉi tiuj situacioj ĉar nestado estas nur subtenata por lego-skriba transakcioj.
- La regreso de SIGSEGV de aliro al la nula adreso kiam oni laboras en nurlegebla reĝimo sen uzi LCK-dosieron estis eliminita, ekzemple, kiam oni metas la datumbazon sur nurlegebla amaskomunikilaro.
fonto: opennet.ru
