Dopu à cinque anni di sviluppu, u secondu candidatu libmdbx 1.0 hè statu publicatu

Dispunibule per pruvà u sicondu candidatu per e versioni di a biblioteca libmdbx cù l'implementazione di una basa di dati di chjave-valore integrata compacta di altu rendiment. A versione attuale (0.5) hè una versione tecnica, marca a cumpiimentu di qualsiasi migliuramentu è a transizione à a fase di a prova finale publica è stabilizazione, cù a furmazione successiva di a prima liberazione completa di a biblioteca. codice libmdbx distribuitu da licenziatu sottu a Licenza Publica OpenLDAP.

A biblioteca MDBX hè una furchetta significativamente rivista da LMDB - DBMS transazionale incorporatu di a classa "key-value" basatu nantu arbre B+ senza logging proattivu, chì permette à i prucessi multi-threaded di travaglià in modu competitivu è efficaci cù una basa di dati sparta in u locu (micca in a rete). A so volta, MDBX hè più veloce è più affidabile di LMDB, è à u stessu tempu conserva tutte e caratteristiche chjave di u so antenatu, cum'è àcitu e letture senza bloccu cù scala lineare in i core di CPU.

I differenzi più impurtanti trà MDBX è LMDB:

  • In fondu, più attenzione hè pagata à a qualità di codice, a prova è i cuntrolli automatichi.
  • Un cuntrollu significativamente più grande durante l'operazione, da a verificazione di i paràmetri à l'auditu internu di e strutture di basa di dati.
  • Compattazione automatica è gestione automatica di a dimensione di a basa di dati.
  • Un unicu formatu di basa di dati per assemblee 32-bit è 64-bit.
  • Stima di volumi di mostra per intervalli (stima di dumanda di intervalli).
  • Supportu per e chjave duie volte più grande di frittelle è dimensione di pagina di basa di dati selezziunata da l'utilizatori.

U candidatu di liberazione libmdbx hè u risultatu di una decisione presa in Aostu 2019 per separà i prughjetti MDBX è MithrilDB. À u listessu tempu, libmdbx hà decisu di eliminà u debitu tecnicu massimu (raziunale) è stabilizzà a biblioteca. In fattu, 2-3 volte più hè stata fatta in a direzzione designata di ciò chì era inizialmente stimatu è pianificatu:

  • U supportu per macOS è e piattaforme di u sicondu livellu hè statu implementatu: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. U supportu AIX è HP-UX pò esse aghjuntu cum'è necessariu.
  • U codice hè statu disinfettatu cù un Sanitizer di Comportamentu Undefined è un Sanitizer di Indirizzu, tutti l'avvirtimenti quandu si custruiscenu cù "-Wpedantic", tutti l'avvertimenti di l'Analyzer Static Coverity, etc. sò stati eliminati.
  • Actualizazione Descrizzione API.
  • Fusione (amalgamazione) di codice fonte per facilità di incrustazione.
  • CMake supportu.
  • Supportu per transazzione nidificatu.
  • Utilizà bootid per stabilisce se u sistema operativu hà riavviatu (arretta di basa di dati brutta).
  • Conte end-to-end di pagine aghjurnati / vechji è infurmazione di transazzione estesa.
  • Opzione MDBX_ACCEDE per cunnette à una basa di dati digià aperta in modu cumpatibile.
  • Usu bloccu OFD quandu dispunibule.
  • Backup caldu in pipa.
  • Algoritmu di ordinamentu internu ottimizatu specializatu (finu à 2-3 volte più veloce di "qsort()" è finu à 30% più veloce di "std::sort()").
  • A lunghezza massima chjave hè stata aumentata.
  • Cuntrolu automaticu di leghje in anticipu (strategia di caching di file di basa di dati in memoria).
  • Compattazione automatica più aggressiva è più veloce.
  • Una strategia più ottima per unisce e pagine di l'arburu B+.
  • Cuntrolla di sistemi di schedarii non lucali (NFS, Samba, etc.) per prevene i danni di a basa di dati s'ellu hè utilizatu in modu incorrectu.
  • U gruppu di teste hè statu allargatu.

U sviluppu di a versione "prossima" di libmdbx continuarà cum'è un prughjettu separatu MithrilDB, mentri u vettore di sviluppu di a versione "attuali" di MDBX hè destinatu à congelate u set di funzioni è stabilizzà. Sta decisione hè stata presa per trè motivi:

  • Totalmente incompatibile: MithrilDB richiede un furmatu di fugliale di basa di dati diversu (incompatibile) è una API diversa (incompatibile) per implementà tutte e funzioni pianificate.
  • Novu codice fonte: U codice fonte MithrilDB hè statu fattu licenziatu indipendente da LMDB, è u prugettu stessu hè previstu per esse publicatu sottu una licenza diversa (appruvata da O SI Licenza Apache 2.0, micca Licenza publica OpenLDAP).
  • A separazione evita a cunfusione potenziale, introduce più certezza è assicura una strada indipendente per i prughjetti.

MithrilDB, cum'è MDBX, hè ancu basatu annantu arbre B+ è hà ancu esse un rendiment estremamente altu, mentre eliminendu una quantità di svantaghji fundamentali di MDBX è LMDB. In particulare, u prublema di "longa lettura", chì si manifesta cum'è "inflazione" di a basa di dati per u fattu chì u processu di basura hè bluccatu da e transazzioni di lettura longa, serà eliminatu. I novi funzioni di MithrilDB includenu:

  • Supportu per mette a basa di dati nantu à parechji media eterogenei: HDD, SSD è memoria non volatile.
  • Strategie ottimali per "valore" è "bassu valore", per dati "caldi", "caldi" è "friddi".
  • Utilizà l'arburu Merkle per monitorizà l'integrità di a basa di dati.
  • Usu facoltativu di WAL è prestazioni significativamente migliorate in scenarii intensivi di scrittura cù garanzii di integrità di dati.
  • Lazy catch-up committe data à i dischi.

Source: opennet.ru

Add a comment