Liberigo de la kompakta enigita DBMS libmdbx 0.9.1

Liberigita biblioteko versio 0.9.1 libmdbx (MDBX) efektivigo de alt-efikeca, kompakta enigita ŝlosil-valora datumbazo. La libmdbx-kodo estas distribuita sub permesilo OpenLDAP Publika Permesilo.

La nuna versio estas kompromiso inter la intenco liberigi longperspektivan stabilan version 1.0 kun plena C++-subteno kaj la malemo prokrasti eldonojn pro nepreteco por frostigi la novan C++ API. La prezentita eldono estas la rezulto de 9 monatoj da laboro celanta stabiligi la bibliotekon kaj plibonigi ĝian uzeblecon, kaj ankaŭ inkluzivas antaŭan version. C++ API.

La libmdbx-biblioteko ne estas nur "forko", sed radikale restrukturita posteulo LMDB — transakcia enigita DBMS de la "ŝlosilvalora" klaso bazita sur arbo B+ sen proaktiva arbohakado, kiu permesas al multfadenaj procezoj labori konkurencive kaj efike kun loke komuna (ne-reta) datumbazo sen diligenta servila procezo. libmdbx esence vastiĝas kapabloj de sia praulo, samtempe eliminante aŭ mildigante malavantaĝojn. Samtempe, laŭ la programistoj, libmdbx estas iom pli rapida kaj signife pli fidinda ol LMDB.

libmdbx sugestas ACIDO, strikta seriigo de ŝanĝoj kaj ne-bloka legado kun linia skalo trans CPU-kernoj. Rezultoj de la testado de rendimento (sendante paralelajn leg-/serĉajn petojn en 1-2-4-8 fadenoj sur CPU i7-4600U kun 2 fizikaj kernoj en 4-fadena HyperThread-reĝimo):

Liberigo de la kompakta enigita DBMS libmdbx 0.9.1

La plej gravaj diferencoj inter MDBX kaj LMDB:

  • Esence, pli da atento estas pagita al kodkvalito, API-konsistenco, testado kaj aŭtomataj kontroloj.
  • Signife pli da kontrolo dum operacio, de kontrolado de parametroj ĝis interna revizio de datumbazaj strukturoj.
  • Aŭtomata kompaktigo kaj aŭtomata datumbaza grandadministrado.
  • Ununura datumbaza formato por 32-bitaj kaj 64-bitaj asembleoj.
  • Taksado de specimenaj volumoj per intervaloj (intervala demanda takso).
  • Subteno por duoble pli longaj klavoj kaj uzant-elektebla datumbaza paĝa grandeco.
  • Ilo por kontroli la integrecon de la datumbaza strukturo kun iuj reakiro-kapabloj.

Ĉefaj novigoj kaj plibonigoj poste antaŭaj novaĵoj kun la enkonduko de versio 0.5 en januaro 2020:

  • Malferma sistemo estis kreita por rapida subteno kaj respondoj al demandoj. Telegrama grupo.
  • Pli ol dekduo da eraroj kaj mankoj estis forigitaj (vidu. ŝanĝprotokolo).
  • Multaj eraroj kaj literumaj eraroj estis korektitaj, kaj multaj kosmetikaj plibonigoj estis faritaj.
  • Testscenaroj estis vastigitaj.
  • Subteno por iOS, Android, konstruradiko, musl, uClibc, WSL1 и vinon.
  • C++ API-antaŭprezento publikigita en unu kapdosiero.
  • Enkonstruita dokumentado en Doxygen-formato kaj aŭtomata generacio Reta dokumentado.
  • Aŭtomata generacio de arkivoj kun amalgamitaj fonttekstoj estas disponigita.
  • Aldonita subteno por preparado de transakcioj kaj kursoroj, uzantkuntekstoj por transakcioj kaj kursoroj.
  • Kromaj metodoj estis efektivigitaj por kontroli referencan integrecon en B+arba MVCC momentfotoj.
  • Aldonita subteno por kontroli MVCC-foton de la datumbazo, alirebla per iu ajn metapaĝo kun la kapablo ŝanĝi por reakiro.
  • Efektivigita subteno por remalfermi la datumbazon de unu procezo por testaj celoj, ktp.
  • Efektivigita aŭtomata prilaborado de la opcio MDBX_NOSUBDIR dum malfermado de datumbazo.
  • Aldonitaj funkcioj por generi entjerajn ŝlosilojn el glitkomaj valoroj kaj JavaScript "universalaj" nombroj.
  • Entute, 430 ŝanĝoj estis faritaj tuŝante 93 dosierojn, pli ol 25 mil linioj estis aldonitaj, pli ol 8.5 mil linioj estis forigitaj.

Posta evoluo de libmdbx fokusiĝos al la fina C++ API, plia stabiligo de la baza kodo, plibonigo de la uzebleco de la biblioteko kaj pakado por popularaj Linuksaj distribuoj. Inter la proponitaj plibonigoj, indas noti subtenon por ŝlosiloj en la formato MesaĝPako.

fonto: opennet.ru

Aldoni komenton