Després de cinc anys de desenvolupament, s'ha publicat la segona versió candidata de libmdbx 1.0

Disponible per provar el segon candidat per als llançaments de la biblioteca libmdbx amb la implementació d'una base de dades de valor-clau incrustada compacta i d'alt rendiment. La versió actual (0.5) és una versió tècnica, marca la finalització de qualsevol millora i la transició a la fase de proves finals públiques i estabilització, amb la formació posterior de la primera versió completa de la biblioteca. codi libmdbx Distribuït per amb llicència sota la llicència pública OpenLDAP.

La biblioteca MDBX és una bifurcació significativament revisada de LMDB — SGBD transaccional incrustat de la classe "clau-valor" basat en arbre B+ без registre proactiu, que permet que els processos multifils funcionin de manera competitiva i eficient amb una base de dades compartida localment (no en xarxa). Al seu torn, MDBX és més ràpid i més fiable que LMDB i, al mateix temps, conserva totes les característiques clau del seu avantpassat, com ara ÀCID i lectures sense bloqueig amb escala lineal als nuclis de la CPU.

Les diferències més importants entre MDBX i LMDB:

  • Bàsicament, es presta més atenció a la qualitat del codi, les proves i les comprovacions automàtiques.
  • Molt més control durant el funcionament, des de la comprovació de paràmetres fins a l'auditoria interna de les estructures de bases de dades.
  • Compactació automàtica i gestió automàtica de la mida de la base de dades.
  • Un únic format de base de dades per a conjunts de 32 i 64 bits.
  • Estimació dels volums de mostra per intervals (estimació de consulta de rang).
  • Suport per a tecles el doble de grans que les creps i mida de pàgina de base de dades seleccionable per l'usuari.

El candidat al llançament de libmdbx és el resultat d'una decisió presa l'agost de 2019 per separar els projectes MDBX i MithrilDB. Al mateix temps, libmdbx va decidir eliminar el deute tècnic màxim (racional) i estabilitzar la biblioteca. De fet, s'ha fet entre 2 i 3 vegades més en la direcció designada del que es va estimar i planificar inicialment:

  • S'ha implementat suport per a macOS i plataformes de segon nivell: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Es pot afegir suport AIX i HP-UX segons sigui necessari.
  • El codi es va desinfectar mitjançant el desinfectant de comportament no definit i el desinfectant d'adreces, es van eliminar tots els avisos quan es construïa amb "-Wpedantic", es van eliminar tots els avisos de Coverity Static Analyzer, etc.
  • Actualització Descripcions de l'API.
  • Fusió (amalgamació) del codi font per facilitar la incrustació.
  • Suport CMake.
  • Suport per a transaccions imbricades.
  • S'utilitza bootid per determinar si el sistema operatiu s'ha reiniciat (aturada de base de dades bruta).
  • Recompte d'extrem a extrem de pàgines actualitzades/antigues i informació de transacció ampliada.
  • Opció MDBX_ACCEDE per connectar-se a una base de dades ja oberta en mode compatible.
  • Utilitzar Bloqueig OFD quan estigui disponible.
  • Còpia de seguretat en calent a la canonada.
  • Algorisme d'ordenació interna optimitzat especialitzat (fins a 2-3 vegades més ràpid que "qsort()" i fins a un 30% més ràpid que "std::sort()").
  • S'ha augmentat la longitud màxima de la clau.
  • Control automàtic de lectura anticipada (estratègia d'emmagatzematge en memòria cau de fitxers de base de dades a la memòria).
  • Compactació automàtica més agressiva i ràpida.
  • Una estratègia més òptima per combinar pàgines d'arbre B+.
  • Control de sistemes de fitxers no locals (NFS, Samba, etc.) per evitar danys a la base de dades si s'utilitza incorrectament.
  • S'ha ampliat el conjunt de proves.

El desenvolupament de la "següent" versió de libmdbx continuarà com un projecte independent MithrilDB, mentre que el vector de desenvolupament de la versió "actual" de MDBX té com a objectiu congelar el conjunt de funcions i estabilitzar-lo. Aquesta decisió es va prendre per tres motius:

  • Totalment incompatible: MithrilDB requereix un format de fitxer de base de dades diferent (incompatible) i una API diferent (incompatible) per implementar totes les funcions planificades.
  • Nou codi font: el codi font de MithrilDB s'ha fet independent de LMDB, i es preveu que el projecte en si es publiqui amb una llicència diferent (aprovada per TAMBÉ Llicència Apache 2.0, no Llicència pública OpenLDAP).
  • La separació evita possibles confusions, introdueix més certesa i assegura un camí independent per als projectes.

MithrilDB, com MDBX, també es basa en arbre B+ i també comptarà amb un rendiment extremadament alt, alhora que eliminarà una sèrie d'inconvenients fonamentals de MDBX i LMDB. En particular, s'eliminarà el problema de les "lectures llargues", que es manifesta com una "inflor" de la base de dades a causa del fet que el processament d'escombraries està bloquejat per transaccions de lectura llarga. Les noves característiques de MithrilDB inclouen:

  • Suport per col·locar la base de dades en diversos suports heterogenis: HDD, SSD i memòria no volàtil.
  • Estratègies òptimes per a dades "valuoses" i "de baix valor", per a dades "calentes", "calentes" i "fredes".
  • Ús de l'arbre Merkle per controlar la integritat de la base de dades.
  • Ús opcional de WAL i rendiment significativament millorat en escenaris d'escriptura intensiva amb garanties d'integritat de dades.
  • Posa al dia mandrosa que s'envia dades als discs.

Font: opennet.ru

Afegeix comentari