Rilascio del DBMS integrato compatto libmdbx 0.9.1
Rilasciato versione della libreria 0.9.1 libmdbx (MDBX) implementazione di un database di valori-chiave incorporato compatto e ad alte prestazioni. Il codice libmdbx è distribuito sotto licenza Licenza pubblica OpenLDAP.
La versione attuale è un compromesso tra l'intenzione di rilasciare una versione 1.0 stabile a lungo termine con pieno supporto C++ e la riluttanza a ritardare i rilasci a causa dell'impreparazione al congelamento della nuova API C++. La versione presentata è il risultato di 9 mesi di lavoro volto a stabilizzare la libreria e migliorarne l'usabilità, e comprende anche una versione preliminare API C++.
La libreria libmdbx non è solo un “fork”, ma un discendente radicalmente riprogettato LMDB — DBMS transazionale incorporato della classe “chiave-valore” basato su albero B+ без registrazione proattiva, che consente ai processi multi-thread di funzionare in modo competitivo ed efficiente con un database condiviso localmente (non di rete) senza un processo server dedicato. libmdbx fondamentalmente espande capacità del suo antenato, eliminando o mitigando contemporaneamente gli svantaggi. Allo stesso tempo, secondo gli sviluppatori, libmdbx è un po' più veloce e significativamente più affidabile di LMDB.
suggerisce libmdbx ACIDO, rigorosa serializzazione delle modifiche e lettura non bloccante con ridimensionamento lineare tra i core della CPU. Risultati dei test delle prestazioni (invio di richieste di lettura/ricerca parallele in 1-2-4-8 thread su una CPU i7-4600U con 2 core fisici in modalità HyperThread a 4 thread):
Le differenze più importanti tra MDBX e LMDB:
Fondamentalmente viene prestata maggiore attenzione alla qualità del codice, alla coerenza delle API, ai test e ai controlli automatici.
Controllo notevolmente maggiore durante il funzionamento, dal controllo dei parametri all'audit interno delle strutture del database.
Compattazione automatica e gestione automatica delle dimensioni del database.
Un unico formato di database per assembly a 32 e 64 bit.
Stima dei volumi dei campioni per intervalli (stima delle query di intervallo).
Supporto per chiavi lunghe il doppio e dimensioni della pagina del database selezionabili dall'utente.
Un'utilità per verificare l'integrità della struttura del database con alcune funzionalità di ripristino.
Principali innovazioni e miglioramenti successivi notizie precedenti con l'introduzione della versione 0.5 a gennaio 2020:
È stato creato un sistema aperto per un supporto tempestivo e risposte alle domande. Gruppo Telegram.
Documentazione integrata in formato Doxygen e generazione automatica Documentazione in linea.
Viene fornita la generazione automatica di archivi con testi di origine amalgamati.
Aggiunto supporto per la preparazione di transazioni e cursori, contesti utente per transazioni e cursori.
Sono stati implementati metodi aggiuntivi per controllare l'integrità referenziale negli snapshot MVCC B+tree.
Aggiunto supporto per il controllo di uno snapshot MVCC del database, accessibile tramite qualsiasi meta pagina con la possibilità di passare al ripristino.
Supporto implementato per la riapertura del database da un processo a scopo di test, ecc.
Implementata l'elaborazione automatica dell'opzione MDBX_NOSUBDIR all'apertura di un database.
Aggiunte funzioni per generare chiavi intere da valori in virgola mobile e numeri “universali” JavaScript.
In totale sono state apportate 430 modifiche che hanno interessato 93 file, sono state aggiunte più di 25mila righe e sono state cancellate più di 8.5mila righe.
Il successivo sviluppo di libmdbx si concentrerà sull'API C++ finale, sull'ulteriore stabilizzazione del codice di base, sul miglioramento dell'usabilità della libreria e sul packaging per le distribuzioni Linux più diffuse. Tra i miglioramenti proposti vale la pena notare il supporto per le chiavi nel formato Pacchetto messaggi.