Uscita del sistema di database embedded ad alte prestazioni libmdbx 0.11.3

È stata rilasciata la libreria libmdbx 0.11.3 (MDBX) con l'implementazione di un database incorporato compatto e ad alte prestazioni di tipo chiave-valore. Il codice di libmdbx è distribuito con licenza OpenLDAP Public License. Sono supportati tutti i sistemi operativi e architetture attuali, nonché l'Elbrus 2000 russo. A fine 2021, libmdbx viene utilizzato come backend di archiviazione nei due client Ethereum più veloci: Erigon e il nuovo "Squalo", che, secondo le informazioni disponibili, è il client Ethereum più performante.

Historicamente, libmdbx è una profonda revisione del DBMS LMDB e supera il suo predecessore per affidabilità, funzionalità e prestazioni. Rispetto a LMDB, in libmdbx viene prestata particolare attenzione alla qualità del codice, al funzionamento stabile dell'API, al testing e ai controlli automatici. È fornuto uno strumento per la verifica dell'integrità della struttura del database con alcune capacità di recupero.

Dal punto di vista tecnologico, libmdbx offre ACID, una rigorosa serializzazione delle modifiche e una lettura non bloccante con scalabilità lineare sui core della CPU. Supporta l'autocompattazione, la gestione automatica delle dimensioni del database e la stima del volume delle interrogazioni per intervalli (range query estimation). Dal 2016, il progetto è finanziato da Positive Technologies e dal 2017 viene utilizzato nei suoi prodotti.

Per libmdbx è disponibile un'API C++, così come bind di linguaggi supportati da appassionati come Rust, Haskell, Python, NodeJS, Ruby, Go e Nim.

Le principali novità, modifiche e correzioni apportate dopo l'ultima notizia dell'11 ottobre:

  • L'API C++ è considerata pronta per l'uso.
  • È stata velocizzata significativamente l'aggiornamento dei dati GC durante la registrazione di enormi transazioni, particolarmente rilevante quando si utilizza libmdbx nell'ecosistema Ethereum.
  • È stata modificata la firma interna del formato del database con supporto per l'aggiornamento automatico, che è completamente trasparente per gli utenti. Questo consente di escludere falsi positivi sulla corruzione del database, quando versioni obsolete della libreria vengono utilizzate per leggere transazioni registrate con versioni attuali.
  • Sono state aggiunte le funzioni mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() e mdbx_env_get_syncbytes(). È stato aggiunto il supporto per l'operazione MDBX_SET_UPPERBOUND.
  • Eliminate tutte le avvertenze durante la compilazione con tutti i compilatori supportati nelle modalità C++ 11/14/17/20. Assicurata la compatibilità con compilatori obsolete: clang dalla versione 3.9, gcc dalla versione 4.8, inclusa la compilazione tramite sdevtoolset-9 per CentOS/RHEL 7.
  • È stata eliminata la possibilità di conflitto delle meta-pagine dopo la commutazione manuale su una meta-pagina specifica tramite l'utilità mdbx_chk.
  • Corretto il ritorno di un errore imprevisto MDBX_PROBLEM durante la sovrascrittura delle meta-pagine obsolete.
  • Corretto il ritorno MDBX_NOTFOUND in caso di corrispondenza imprecisa durante l'elaborazione della richiesta MDBX_GET_BOTH.
  • Risolto un errore di compilazione su Linux in assenza di file di intestazione con le descrizioni delle interfacce con il kernel.
  • Corretto il conflitto tra il flag interno MDBX_SHRINK_ALLOWED e l'opzione MDBX_ACCEDE.
  • Rimossi diversi assert inutili.
  • Corretto un ritorno inaspettato di MDBX_RESULT_TRUE dalla funzione mdbx_env_set_option().
  • In totale, sono stati apportati oltre 90 cambiamenti in 25 file, aggiunte ~1300 righe, rimosse ~600.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster