È disponibile il motore di archiviazione integrato TidesDB 1.0, che supporta le transazioni ACID

È stata pubblicata la prima versione stabile del progetto TidesDB, un sistema per la gestione dei dati in formato chiave/valore. Il progetto può essere utilizzato sia come motore autonomo che per l'integrazione nelle applicazioni. Tra le principali funzionalità spiccano il supporto alle transazioni ACID e l'ottimizzazione per la conservazione efficiente dei dati su dispositivi Flash e nella memoria principale. Il codice è scritto in C e distribuito sotto licenza MPL 2.0. Sono disponibili binding per C++, Go, Java, Python, Rust, Lua e JavaScript.

Per la gestione dei dati viene utilizzata una struttura LSM-tree (albero log-structured con merging), che assicura alte prestazioni non solo durante la lettura, ma anche durante le operazioni di scrittura e modifica dei dati. Le operazioni di lettura non bloccano le scritture e le letture dei dati, mentre le operazioni di scrittura bloccano solo il family di colonne in cui viene effettuata la scrittura. Per migliorare ulteriormente le prestazioni di lettura sono supportati indici e caching basati su bloom filter (che consentono di verificare l'appartenenza a un insieme, ammettendo errori nell'identificazione di un elemento mancante, ma escludendo la mancata identificazione di un elemento esistente).

È supportata pienamente la transazione ACID, che consente di apportare modifiche atomiche a famiglie di colonne e, se necessario, di tornare indietro in modo atomico. I dati possono essere memorizzati in forma compressa con la possibilità di scelta dell'algoritmo di compressione legato alla famiglia di colonne. È possibile impostare blocchi a livello di singole famiglie di colonne e imballare lo storage in modalità parallela senza bloccare l'esecuzione delle operazioni sul database.

Caratteristiche principali:

  • Supporto per le famiglie di colonne (Column Families) — set isolati di dati in formato chiave/valore. Ogni famiglia di colonne utilizza il proprio memtable, SSTable e WAL-log.
  • Transazioni ACID che coprono più operazioni con famiglie di colonne.
  • Ottimizzazione per l'accesso parallelo ai dati.
  • Supporto per iteratori bidirezionali che consentono di scorrere le coppie chiave/valore in avanti o indietro rispetto a una posizione scelta nello storage, utilizzando un metodo di ordinamento definito in precedenza.
  • Supporto per l'aggiunta di funzioni di confronto delle chiavi personalizzate. Sono disponibili funzioni di confronto integrate come memcmp, string e numeric.
  • Gestione del log delle operazioni (WAL, Write-Ahead Log) e ripristino automatico del memtable (archivio in memoria) da questo log all'avvio.
  • Utilizzo di filtri Bloom per minimizzare le richieste all'archivio controllando la presenza della chiave prima della lettura da SSTable (archivio permanente).
  • Supporto per gli algoritmi Snappy, LZ4 e ZSTD per la compressione delle registrazioni nell'archivio SSTable e nel log WAL.
  • Possibilità di definire il tempo di vita delle registrazioni (TTL) ed escludere automaticamente le registrazioni scadute.
  • Tre modalità di sincronizzazione dei dati in RAM con l'archivio permanente: NONE (la più veloce), BACKGROUND (bilanciata), FULL (la più affidabile).
  • Possibilità di configurare le dimensioni del memtable, i metodi di compressione, i filtri Bloom, le modalità di sincronizzazione e i parametri di impacchettamento per ciascuna famiglia di colonne.
  • Semplice API C che restituisce 0 per un'operazione riuscita e -1 in caso di errore.
  • Utilizzo di SBHA (Sorted Binary Hash Array) per una rapida ricerca dei dati in SSTable, che consente di determinare gli offset dei blocchi con le chiavi senza una scansione completa.
  • Formato binario compatto e portabile per la rappresentazione del database, che supporta il versioning.
  • Meccanismi integrati di controllo dell'integrità, rilevamento dei danneggiamenti dei dati e ripristino.

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