Rilascio del DBMS incorporato ad alte prestazioni libmdbx 0.11.3

La libreria libmdbx 0.11.3 (MDBX) è stata rilasciata con l'implementazione di un database chiave-valore incorporato compatto ad alte prestazioni. Il codice libmdbx è concesso in licenza sotto la licenza pubblica OpenLDAP. Sono supportati tutti i sistemi operativi e le architetture attuali, compreso il russo Elbrus 2000. Alla fine del 2021, libmdbx verrà utilizzato come backend di archiviazione nei due client Ethereum più veloci: Erigon e il nuovo "Shark", che, secondo le informazioni disponibili informazioni, è il client Ethereum con le prestazioni più elevate.

Storicamente, libmdbx è una profonda riprogettazione del DBMS LMDB e supera il suo progenitore in termini di affidabilità, set di funzionalità e prestazioni. Rispetto a LMDB, libmdbx pone molta enfasi sulla qualità del codice, sulla stabilità dell'API, sui test e sui controlli automatizzati. Con alcune opzioni di recupero viene fornita un'utility per il controllo dell'integrità della struttura del database.

Dal punto di vista tecnologico, libmdbx offre ACID, una forte serializzazione delle modifiche e letture non bloccanti con ridimensionamento lineare tra i core della CPU. Sono supportate la compattazione automatica, la gestione automatica delle dimensioni del database e la stima delle query di intervallo. Dal 2016, il progetto è stato finanziato da Positive Technologies ed è utilizzato nei suoi prodotti dal 2017.

libmdbx offre un'API C++, nonché collegamenti linguistici supportati dagli appassionati per Rust, Haskell, Python, NodeJS, Ruby, Go e Nim.

Principali innovazioni, miglioramenti e correzioni aggiunte rispetto alla notizia precedente dell'11 ottobre:

  • L'API C++ è considerata pronta per l'uso.
  • L'aggiornamento dei dati GC quando si effettuano transazioni di grandi dimensioni è stato notevolmente accelerato, il che è particolarmente importante quando si utilizza libmdbx nell'ecosistema Ethereum.
  • La firma interna del formato del database è stata modificata per supportare l'aggiornamento automatico, che è completamente trasparente per gli utenti. Ciò consente di eliminare i messaggi falsi positivi relativi al danneggiamento del database quando vengono utilizzate versioni obsolete della libreria per leggere le transazioni registrate dalle versioni correnti.
  • Aggiunte funzioni mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() e mdbx_env_get_syncbytes(). Aggiunto il supporto per l'operazione MDBX_SET_UPPERBOUND.
  • Tutti gli avvisi durante la compilazione con tutti i compilatori supportati nelle modalità C++ 11/14/17/20 sono stati eliminati. È assicurata la compatibilità con i compilatori legacy: clang a partire da 3.9, gcc a partire da 4.8, incluso assembly utilizzando cdevtoolset-9 per CentOS/RHEL 7.
  • Risolta la possibilità di un conflitto di meta pagine dopo il passaggio manuale a una meta pagina specifica utilizzando l'utilità mdbx_chk.
  • Risolto il problema con la restituzione dell'errore imprevisto MDBX_PROBLEM durante la sovrascrittura delle meta pagine legacy.
  • Risolto il problema con la restituzione MDBX_NOTFOUND in caso di corrispondenza inesatta durante l'elaborazione di una richiesta MDBX_GET_BOTH.
  • Risolto un errore di compilazione su Linux in assenza di file header con descrizioni delle interfacce con il kernel.
  • Risolto un conflitto tra il flag interno MDBX_SHRINK_ALLOWED e l'opzione MDBX_ACCEDE.
  • Sono stati eliminati diversi controlli di asserzione non necessari.
  • Risolto il problema con il ritorno imprevisto di MDBX_RESULT_TRUE dalla funzione mdbx_env_set_option().
  • In totale, sono state apportate più di 90 modifiche a 25 file, sono state aggiunte circa 1300 righe e ne sono state eliminate circa 600.

Fonte: opennet.ru

Aggiungi un commento