Dopo cinque anni di sviluppo, è stato pubblicato il secondo candidato alla release di libmdbx 1.0

Disponibile per la fase di test del secondo candidato nei rilasci della libreria libmdbx con l'implementazione di un database embedded ad alte prestazioni e compatto basato su chiave-valore. La versione attuale (0.5) rappresenta un rilascio tecnico, segnando la conclusione di eventuali modifiche e il passaggio alla fase di test finale pubblico e stabilizzazione, con la successiva formazione del primo rilascio completo della libreria. Il codice libmdbx distribuito è sotto la licenza OpenLDAP Public License.

La libreria MDBX è un ramo significativamente rivisitato di LMDB — di un DBMS incorporato transazionale di tipo «chiave-valore» basato su albero B+ di journaling predittivo, che consente ai processi multithread di operare in modo competitivo ed efficiente con un database condiviso localmente (non di rete). A sua volta, MDBX è più veloce e più affidabile di LMDB, mantenendo tutte le chiavi possibilità del suo antenato, come ACID e la lettura non bloccante con scalabilità lineare attraverso i core CPU.

Le principali differenze di MDBX rispetto a LMDB:

  • Una maggiore attenzione è dedicata alla qualità del codice, ai test e ai controlli automatici.
  • Controllo significativamente maggiore durante l'esecuzione, dalla verifica dei parametri, fino all'audit interno delle strutture del database.
  • Auto-compattamento e gestione automatica della dimensione del DB.
  • Formato unificato del DB per le versioni a 32 e 64 bit.
  • Valutazione del volume delle selezioni per intervallo (range query estimation).
  • Supporto per chiavi due volte più grandi e dimensione della pagina del DB selezionata dall'utente.

Il candidato rilasciato per libmdbx è il risultato di una decisione presa nell'agosto 2019 di separare i progetti MDBX e MithrilDB. È stata presa la decisione di ridurre il massimo (ragionevolmente) il debito tecnico e stabilizzare la libreria. In effetti, nel suddetto ambito è stato realizzato 2-3 volte di più rispetto a quanto inizialmente stimato e pianificato:

  • È stato implementato il supporto per macOS e piattaforme di "secondo livello": FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Il supporto per AIX e HP-UX può essere aggiunto se necessario.
  • È stata effettuata la sanificazione del codice utilizzando Undefined Behavior Sanitizer e Address Sanitizer, risolti tutti gli avvisi durante la compilazione con "-Wpedantic", e tutti gli avvisi di Coverity Static Analyzer, ecc.
  • Aggiornamento descrizione API.
  • Amalgamazione del codice sorgente per facilitare l'integrazione.
  • Supporto per CMake.
  • Supporto per transazioni annidate.
  • Utilizzo del bootid per determinare il fatto di un riavvio del sistema operativo (arresto anomalo del DB).
  • Conteggio completo delle pagine aggiornate/vecchie e informazioni dettagliate sulle transazioni.
  • Opzione MDBX_ACCEDE per connettersi a un database già aperto in modalità compatibile.
  • L'utilizzo di Blocchi OFD quando disponibili.
  • Backup a caldo nel pipe.
  • Algoritmo di ordinamento interno specializzato e ottimizzato (fino a 2-3 volte più veloce di "qsort()" e fino al 30% più veloce di "std::sort().")
  • Aumentata la lunghezza massima della chiave.
  • Gestione automatica del read ahead (strategia di caching del file DB in memoria).
  • Compattazione automatica più aggressiva e veloce.
  • Strategia di fusione delle pagine B+ al massimo dell'ottimizzazione.
  • Controllo dei file system non locali (NFS, Samba, ecc.) per prevenire il danneggiamento del database in caso di utilizzo improprio.
  • Espanso il set di test.

Lo sviluppo della 'prossima' versione di libmdbx sarà proseguito all'interno di un progetto separato MithrilDB, mentre la direzione dello sviluppo della 'versione attuale' di MDBX è orientata a congelare il set di funzionalità e stabilizzarlo. Questa decisione è stata presa per tre motivi:

  • Incompatibilità totale: per implementare tutte le funzionalità pianificate di MithrilDB è necessario un altro formato di file DB (incompatibile) e un'altra API (incompatibile).
  • Nuovo codice sorgente: Il codice sorgente di MithrilDB garantirà l'indipendenza licenziale da LMDB e il progetto sarà pubblicato con un'altra licenza (approvata) OSI con licenza Apache 2.0, invece di Licenza Pubblica OpenLDAP).
  • La separazione consente di evitare possibili confusioni, di apportare maggiore certezza e di garantire l'indipendenza nello sviluppo dei progetti.

MithrilDB, come MDBX, si basa anche su alberi B+ e avrà prestazioni estremamente elevate, eliminando al contempo alcuni difetti fondamentali di MDBX e LMDB. In particolare, sarà risolta la questione delle «letture lunghe», che si manifesta come «espandimento» del DB dovuto al fatto che la raccolta dei rifiuti è bloccata da transazioni di lettura lunghe. Tra le nuove funzionalità di MithrilDB, si segnala:

  • Supporto per la gestione del database su diversi tipi di supporti: HDD, SSD e memoria non volatile.
  • Strategie ottimali per dati "preziosi" e "poco preziosi", per dati "caldi", "tiepidi" e "freddi".
  • Utilizzo degli Merkle tree per il controllo dell'integrità del database.
  • Utilizzo opzionale di WAL e prestazioni significativamente più elevate in scenari con scritture intensive e garanzie di integrità dei dati.
  • Registrazione pigra e compensativa dei dati sui dischi.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster