versione 0.9.1 della libreria (MDBX) con un'implementazione di un database incorporato ad alte prestazioni e compatto di tipo chiave-valore. Il codice libmdbx è distribuito con la licenza .
La versione corrente è un compromesso tra l'intenzione di rilasciare una versione stabile a lungo termine 1.0 con supporto completo per C++ e il desiderio di non ritardare i rilasci a causa della mancata prontezza per il congelamento del nuovo API C++. Il rilascio presentato è il risultato di 9 mesi di lavoro volto alla stabilizzazione della libreria e al miglioramento della sua facilità d'uso, e include una versione preliminare .
La libreria libmdbx non è semplicemente un «fork», ma un discendente radicalmente riprogettato — di un DBMS incorporato transazionale di tipo «chiave-valore» basato su di , che consente a processi concorrenti e multi-thread di lavorare in modo efficiente con un DB locale condiviso (non in rete) senza un processo server dedicato. Libmdbx è fondamentalmente le funzionalità del suo predecessore, eliminando o attenuando i difetti. Gli sviluppatori ritengono che libmdbx sia leggermente più veloce e decisamente più affidabile di LMDB.
libmdbx offre , una rigorosa serializzazione delle modifiche e lettura non bloccante con scalabilità lineare sui core della CPU. I risultati dei test di performance (invio di richieste parallele per lettura/ricerca in 1-2-4-8 thread su CPU i7-4600U con 2 core fisici in modalità 4-thread HyperThread):
Le principali differenze di MDBX rispetto a LMDB:
- Maggiore attenzione alla qualità del codice, all'"indipendenza" dell'API, 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 di lunghezza doppia e dimensione della pagina del DB selezionabile dall'utente.
- Utilità di verifica dell'integrità della struttura del DB con alcune funzionalità di recupero.
Novità principali e aggiornamenti dopo con il rilascio della versione 0.5 a gennaio 2020:
- Per supporto tempestivo e risposte a domande è stato creato un gruppo aperto .
- Eliminate oltre una decina di bug e imprecisioni (vedi ).
- Corrette molteplici errori di battitura e ortografici, numerosi miglioramenti estetici.
- Espansi gli scenari di test.
- Implementato il supporto per iOS, Android, , , , e .
- Introdotta una versione preliminare dell'API C++ in .
- Preparata la documentazione incorporata in formato Doxygen e generazione automatica .
- Garantita la creazione automatica di archivi con i testi sorgente amalgamati.
- Aggiunto supporto per la preparazione di transazioni e cursori, contesti personalizzati per transazioni e cursori.
- Implementati metodi aggiuntivi per il controllo dell'integrità referenziale nelle istantanee MVCC B+tree.
- Aggiunto supporto per la verifica dell'istantanea MVCC del DB, accessibile tramite qualsiasi pagina meta con possibilità di commutazione per il ripristino.
- Implementato supporto per la riapertura del DB da un processo per scopi di test e simili.
- È stata implementata la gestione automatica dell'opzione MDBX_NOSUBDIR durante l'apertura del database.
- Sono state aggiunte funzioni per generare chiavi intere a partire da valori in virgola mobile e numeri 'universali' di JavaScript.
- Sono state apportate in totale 430 modifiche che hanno interessato 93 file, aggiungendo oltre 25.000 righe e rimuovendo più di 8.500 righe.
Lo sviluppo successivo di libmdbx si concentrerà sulla definizione dell'API finale in C++, sulla stabilizzazione del codice base, sul miglioramento dell'usabilità della libreria e sulla creazione di pacchetti per le distribuzioni Linux più popolari. Tra le modifiche previste, vale la pena notare il supporto per le chiavi in formato .
Fonte: opennet.ru
