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):

Rilascio del DBMS integrato compatto libmdbx 0.9.1

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.
  • Sono stati eliminati più di una dozzina di errori e carenze (vedi. registro delle modifiche).
  • Sono stati corretti molti errori di battitura ed ortografia e sono stati apportati numerosi miglioramenti estetici.
  • Gli scenari di test sono stati ampliati.
  • Supporto per iOS, Android, buildroot, musulmano, uClibc, WSL1 и Wine.
  • Anteprima dell'API C++ rilasciata in un file di intestazione.
  • 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.

Fonte: opennet.ru

Aggiungi un commento