versione 0.9.1 della libreria (MDBX) con l'implementazione di un database incorporato compatto e ad alte prestazioni di tipo chiave-valore. Il codice di libmdbx è distribuito con licenza .
La versione attuale rappresenta un compromesso tra l'intenzione di rilasciare una versione stabile a lungo termine 1.0 con pieno supporto C++ e il desiderio di non ritardare i rilasci a causa della mancanza di prontezza per il congelamento della nuova API C++. Il rilascio presentato è il risultato di 9 mesi di lavoro mirato a stabilizzare la libreria e migliorare la sua usabilità, e include anche una versione preliminare .
La libreria libmdbx non è semplicemente un «fork», ma un discendente radicalmente riprogettato di — un SGBD incorporato transazionale di tipo «chiave-valore» basato su senza , che consente ai processi multi-thread di lavorare in modo concorrente ed efficiente con il database condiviso localmente (non di rete) senza un processo server dedicato. Libmdbx affronta fondamentalmente le capacità del suo progenitore, eliminando o attenuando le carenze. Credo che, secondo gli sviluppatori, libmdbx sia leggermente più veloce e sostanzialmente più affidabile di LMDB.
libmdbx offre , una rigorosa serializzazione delle modifiche e una lettura non bloccante con scalabilità lineare rispetto ai core CPU. I risultati dei test di prestazioni (invio di richieste parallele di lettura/cerca in 1-2-4-8 thread su CPU i7-4600U con 2 core fisici in modalità 4 thread HyperThread):
Le differenze più importanti tra MDBX e LMDB:
- Si pone una maggiore attenzione alla qualità del codice, alla ‘non caduta’ dell'API, ai test e ai controlli automatici.
- Maggiore controllo durante l'esecuzione, dalla verifica dei parametri fino all'audit interno delle strutture del database.
- Auto-compattazione e gestione automatica della dimensione del database.
- Formato unificato del database per build a 32 bit e 64 bit.
- Stima del volume delle selezioni per intervalli (range query estimation).
- Supporto per chiavi di lunghezza doppia e dimensione della pagina del database selezionabile dall'utente.
- Strumento per la verifica dell'integrità della struttura del database con alcune capacità di recupero.
Le principali novità e modifiche dopo con la presentazione della versione 0.5 a gennaio 2020:
- Per supporto operativo e risposte alle domande è stato creato un gruppo aperto .
- Sono stati risolti più di dieci errori e difetti (vedi. ).
- Sono state corrette numerose refusi ed errori ortografici, e apportate molteplici migliorie cosmetiche.
- Ampliati gli scenari di test.
- Implementato supporto per iOS, Android, , , , e .
- È stata presentata una versione preliminare dell'API C++ in .
- Documentazione integrata formattata in Doxygen e generazione automatica .
- È stata garantita la creazione automatica di archivi con testi sorgente amalgamati.
- Aggiunto il supporto per la preparazione di transazioni e cursori, contesti utente per transazioni e cursori.
- Implementati metodi aggiuntivi di controllo dell'integrità referenziale negli snapshot MVCC B+tree.
- Aggiunto supporto per la verifica dello snapshot MVCC del database, accessibile tramite qualsiasi meta-pagina con possibilità di commutazione per il recupero.
- Implementato supporto per la riapertura del database da un unico processo a fini di test e simili.
- Implementata gestione automatica dell'opzione MDBX_NOSUBDIR all'apertura del database.
- Aggiunte funzioni per la generazione di chiavi intere da valori in virgola mobile e numeri 'universali' di JavaScript.
- In totale sono state apportate 430 modifiche che interessano 93 file, aggiunte oltre 25.000 righe, più di 8.500 righe rimosse.
Lo sviluppo successivo di libmdbx si concentrerà sulla formazione della versione finale dell'API C++, ulteriori stabilizzazioni del codice di base, miglioramento dell'usabilità della libreria e creazione di pacchetti per popolari distribuzioni Linux. Tra le modifiche previste si segnala il supporto per chiavi nel formato .
Fonte: opennet.ru
