Uscita del database embedded libmdbx 0.13.6

È stata pubblicata la versione della libreria libmdbx 0.13.6 (MDBX) che implementa un database embedded di tipo chiave-valore ad alte prestazioni. Il codice di libmdbx è distribuito con licenza Apache 2.0. Sono supportati tutti i sistemi operativi e architetture attuali, inclusi i russi Elbrus 2000. Per libmdbx è offerta una API avanzata per C++, oltre a binding supportati da appassionati per i linguaggi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno e Scala. Tra i progetti che utilizzano libmdbx si possono citare Isar, Erigon e Reth, oltre a sviluppi delle aziende StarkWare e Positive Technologies.

Historicamente, libmdbx è una revisione approfondita del DBMS LMDB e supera il suo predecessore in termini di affidabilità, funzionalità e prestazioni. Rispetto a LMDB, in libmdbx viene posta grande attenzione alla qualità del codice, al funzionamento stabile dell'API, al testing e ai controlli automatici. È fornuto uno strumento per verificare l'integrità della struttura del database con alcune funzionalità di ripristino. Dal punto di vista tecnologico, libmdbx offre ACID, stretta serializzazione delle modifiche e lettura non bloccante con scalabilità lineare su core CPU. Supporta la compattazione automatica, la gestione automatica delle dimensioni del database e la stima del volume delle query per intervallo (range query estimation).

Principali modifiche:

  • Modifica del comportamento: Se non è possibile scollegare il cursore dalla sua transazione attuale, la funzione mdbx_cursor_bind() ora restituisce MDBX_EINVAL invece di MDBX_BAD_TXN.
  • Per evitare potenziali problemi, è stato disabilitato l'uso di copy_file_range() su kernel Linux 5.3 — 5.18.
  • Ora lancia std::invalid_argument con il messaggio esplicito MDBX_EINVAL.
  • È stato risolto un regresso nell'uso dei cursori per DBI=0 (aka GC/FreeDB) nelle transazioni di lettura.
  • È stato risolto un regresso che causava l'errore EAGAIN durante la copia del DB su NFS e CIFS/SMB.
  • Nelle modifiche/sviluppi dell'API nella funzione di copia è stata aggiunta la cattura del blocco dei file tramite sia fcntl() che flock(). Tuttavia, a seconda della versione del kernel locale, della versione remota di server NFS e delle opzioni di montaggio, ciò poteva portare al ritorno di un errore POSIX EAGAIN (11 sulla maggior parte delle piattaforme, incluso Linux).
  • È stato corretto un errore di merge/rebase all'interno di mdbx_txn_release_all_cursors_ex(), che poteva portare a errori MDBX_EBADSIGN e perdite di memoria inaspettati successivi.
  • È stata corretta la verifica assert nel percorso di completamento delle transazioni nidificate.
  • È stata eliminata la possibilità di ricevere un errore inaspettato MDBX_BUSY da mdbx_txn_lock(dont_wait=false).
  • Per compatibilità con GCC 15.x in modalità C23, è stato modificato l'ordine di specifica degli attributi delle funzioni.

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