Rilascio del database integrato libmdbx 0.13.3

È stato pubblicato il rilascio della libreria libmdbx 0.13.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 Apache 2.0. Sono supportati tutti i sistemi operativi e architetture attuali, inclusi i dettagliati Elbrus 2000 in Russia. Per libmdbx è disponibile un'API avanzata per C++, oltre a binding supportati dalla comunità per linguaggi come Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno e Scala.

Storicamente, libmdbx è una profonda revisione del DBMS LMDB e supera il suo predecessore in termini di affidabilità, funzionalità e prestazioni. Rispetto a LMDB, libmdbx pone grande attenzione alla qualità del codice, al funzionamento stabile dell'API, ai test e ai controlli automatici. Viene fornuto uno strumento di verifica dell'integrità della struttura del database con alcune funzionalità di recupero. Dal punto di vista tecnologico, libmdbx offre ACID, una rigorosa serializzazione delle modifiche e letture non bloccanti con scalabilità lineare in base ai core della CPU. Supporta l'autocompattazione, la gestione automatica delle dimensioni del database e la stima del volume delle query per intervallo.

Principali modifiche:

  • Il ramo 0.13.x ha raggiunto lo stato stabile. È iniziato lo sviluppo del ramo 0.14.x.
  • Nell'API C è stata aggiunta la funzione mdbx_cursor_count_ex(), che consente di ottenere sia il numero di multi-valori corrispondenti alla chiave corrente, sia informazioni sull'albero nidificato che memorizza questi valori.
  • Nell'API C++ è stato aggiunto il metodo mdbx::txn::make_broken(), simile a mdbx_txn_break().
  • Negli strumenti mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load e mdbx_stat è stata implementata la registrazione degli errori, dei warning e dei messaggi importanti da libmdbx.
  • Modifica del comportamento:
    • Attivando il profiling del garbage collector (compilazione con l'opzione MDBX_ENABLE_PROFGC=ON), ora vengono conteggiati i tempi di CPU impiegati nella fusione delle liste di pagine, ossia nel funzionamento della funzione pnl_merge().
    • Nell'utilità di testing, il valore della modalità dati è stato rinominato da data.dups a data.multi.
    • Implementato il controllo della lunghezza della chiave all'interno di cursor_seek().
    • Se l'utente non imposta un valore specifico tramite mdbx_env_set_option(MDBX_opt_txn_dp_limit), viene adattato il dirty-pages-limit all'avvio di ogni transazione di scrittura non annidata, in base alla quantità di RAM disponibile e alla dimensione del database.
    • In modalità MDBX_NOSTICKYTHREADS è consentito commit/abort delle transazioni annidate da qualsiasi thread.
    • Durante il tentativo di avviare transazioni annidate in modalità MDBX_WRITEMAP, viene registrato un log e restituito l'errore MDBX_INCOMPATIBLE.
    • Nell'API C++, nei costruttori/inizializzatori e nei metodi legati alla formattazione della geometria del database, vengono utilizzati solo i valori di default per impostazione predefinita.
    • All'interno di mdbx_env_set_geometry() sono state migliorate le euristiche per la selezione dei parametri di geometria del database richiesti dall'utente 'di default'.
  • Correzioni:
    • Ripristinato il problema della mancata sblocco del mutex durante il tentativo di chiusura ripetuta del descrittore dbi, inclusa la chiusura esplicita del descrittore dopo l'eliminazione della tabella correlata.
    • Ripristinato il problema dello stato del cursore annidato/dupsort dopo l'inserimento di dati in modalità MDBX_APPEND.
    • Supporto per la ricezione di boot_id durante l'operatività all'interno di un container LXC.
    • Corretto l'errore di gestione errata nel tentativo di avviare una transazione di lettura annidata. Ora, in queste situazioni, viene restituito l'errore MDBX_EINVAL, poiché la nidificazione è supportata solo per transazioni di lettura e scrittura.
    • Risolto il regressione SIGSEGV relativo all'accesso a un indirizzo nullo quando si opera in modalità sola lettura senza l'uso di un file LCK, ad esempio quando il database è collocato su un supporto accessibile solo in lettura.

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