Dua kandidato al liberigo de libmdbx v1.0 post kvin jaroj da evoluo.

biblioteko libmdbx estas signife restrukturita posteulo de LMDB - ekstreme alt-efikeca, kompakta enigita ŝlosilvalora datumbazo.
La nuna versio v0.5 estas teknika eldono, markas la kompletigon de iuj plibonigoj kaj la transiron al la fazo de publika fina testado kaj stabiligo, kun la posta formado de la unua plena eldono de la biblioteko.

LMDB estas sufiĉe konata transakcia enigita ŝlosilvalora DBMS bazita sur arbo B+ sen proaktiva arbohakado, kiu permesas al svarmo de multfadenaj procezoj labori konkurencive kaj ekstreme efike kun loke komuna (ne reto) datumbazo. Siavice, MDBX estas pli rapida kaj pli fidinda ol LMDB, dum libmdbx konservas ĉiujn ĉefajn trajtojn de sia prapatro, kiel ekzemple ACIDO kaj ne-blokaj legas kun lineara skalo trans CPU-kernoj, kaj ankaŭ aldonas plurajn novajn.

Priskribo de la diferencoj kaj plibonigoj de libmdbx rilate al LMDB meritas apartan artikolon (planitan por esti publikigita ĉe Habré kaj Medium). Ĉi tie taŭgas mencii la plej gravajn kaj rimarkindajn:

  • Esence, pli da atento estas pagita al kodkvalito, testado kaj aŭtomata kontrolo.
  • 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.
  • Takso de specimena grandeco laŭ intervaloj (intervalo-demanda takso).
  • Subteno por ŝlosiloj duoble pli grandaj ol krespoj kaj uzant-elektebla datumbaza paĝa grandeco.

La liberiga kandidato de libmdbx estas la rezulto de la decido (vidu sube) apartigi la projektojn MDBX kaj MithrilDB en aŭgusto 2019. Samtempe, libmdbx decidis forigi la (racian) maksimuman teknikan ŝuldon kaj stabiligi la bibliotekon. Fakte, 2-3 fojojn pli estis farita en la difinita direkto ol estis komence taksita kaj planita:

  • Subteno por Mac OS kaj duanivelaj platformoj estis efektivigita: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX kaj HP-UX-subteno povas esti aldonita laŭbezone.
  • La kodo estis sanigita per Nedifinita Konduto Sanitizer kaj Address Sanitizer, ĉiuj avertoj dum konstruado kun -Wpedantic, ĉiuj Coverity Static Analyzer avertoj, ktp.
  • Ĝisdatigo API-priskriboj.
  • Fuzio de fontkodo por facileco de enkonstruado.
  • CMake subteno.
  • Subteno por nestitaj transakcioj.
  • Uzante bootid por determini ĉu la OS rekomencis (malpura datumbazo haltas).
  • Fin-al-fina nombrado de ĝisdatigitaj/malnovaj paĝoj kaj plilongigitaj transakciaj informoj.
  • Opcio MDBX_ACCEDE por konektiĝi al jam malfermita datumbazo en kongrua reĝimo.
  • Uzo OFD-blokado kiam disponeblas.
  • Varma sekurkopio en tubo.
  • Specialigita optimumigita interna ordiga algoritmo (ĝis 2-3 fojojn pli rapide ol qsort() kaj ĝis 30% pli rapide ol std::sort()).
  • La maksimuma ŝlosillongo estis pliigita.
  • Aŭtomata kontrolo de legado antaŭen (datumbaza dosiero kaŝmemorstrategio en memoro).
  • Pli agresema kaj pli rapida aŭto-kompaktigo.
  • Pli optimuma strategio por kunfandi B+-arbpaĝojn.
  • Kontrolo de ne-lokaj dosiersistemoj (NFS, Samba, ktp.) por malhelpi datumbazdamaĝon se uzata malĝuste.
  • La aro de testoj estis pligrandigita.

Disvolviĝo de la "sekva" versio de libmdbx daŭros kiel aparta projekto MithrilDB, dum la disvolva vektoro de la "nuna" versio de MDBX celas frostigi la funkcion kaj stabiligi ĝin. Ĉi tiu decido estis farita pro tri kialoj:

  • Tute nekongrua: MithrilDB postulas malsaman (nekongruan) datumbazan dosierformaton kaj malsaman (nekongruan) API por efektivigi ĉiujn planitajn funkciojn.
  • Nova fontkodo: La fontkodo MithrilDB fariĝis licencita sendependa de LMDB, kaj la projekto mem estas planita esti publikigita sub malsama permesilo (aprobita de A IF SE permesilo Apache 2.0kaj ne Fondaĵo OpenLDAP).
  • La apartigo evitas eblan konfuzon, disponigas pli da certeco, kaj certigas ke projektoj havas sendependan vojon antaŭen.

MithrilDB, kiel MDBX, ankaŭ estas bazita sur arbo B+ kaj ankaŭ prezentos ekstreme altan rendimenton, dum vi forigas kelkajn fundamentajn malavantaĝojn de MDBX kaj LMDB. Precipe, la problemo de "longaj legadoj" estos forigita, kiu manifestiĝas kiel "ŝveliĝo" de la datumbazo pro la fakto, ke rubopretigo estas blokita de longaj legado-transakcioj. Novaj MithrilDB-ecoj inkluzivas:

  • subteno por meti la datumbazon sur pluraj heterogenaj amaskomunikiloj: HDD, SSD kaj nevolatila memoro.
  • optimumaj strategioj por "valoraj" kaj "malaltvaloraj", por "varmaj", "varmaj" kaj "malvarmaj" datumoj.
  • uzante Merkle-arbon por monitori datumbazan integrecon.
  • laŭvola uzo de WAL kaj signife pli alta rendimento en skrib-intensaj scenaroj kaj garantioj de integreco de datumoj.
  • Maldiligenta fiksado de datumoj sur diskoj.

fonto: linux.org.ru

Aldoni komenton