Motorul de stocare încorporat TidesDB 1.0, care suportă tranzacții ACID, este disponibil

A fost lansată prima versiune stabilă a proiectului TidesDB, care dezvoltă o bibliotecă pentru stocarea datelor în format cheie/valoare. Proiectul poate fi folosit fie ca un motor autonom, fie pentru a fi inclus în aplicații. Printre caracteristicile principale se numără suportul pentru tranzacții ACID și optimizarea pentru stocarea eficientă a datelor pe unități Flash și în memorie. Codul este scris în limba C și este distribuit sub licența MPL 2.0. Legăturile au fost pregătite pentru limbile C++, Go, Java, Python, Rust, Lua și JavaScript.

Pentru stocarea datelor este utilizată structura LSM-tree (arbore logarhythmizat cu fuziune), care asigură performanță ridicată nu doar în timpul citirii, ci și în timpul execuției operațiunilor de scriere și modificare a datelor. Operațiunile de citire nu blochează scrierea și citirea datelor, iar operațiunile de scriere blochează doar familia de coloane în care se efectuează scrierea. Pentru a accelera suplimentar citirea, sunt suportate indecșii și caching bazat pe filtre bloom (permit verificarea apartenenței la un set, acceptând o identificare falsă a unui element absent, dar excluzând o rată de neobservare a unui element existent).

Există un suport complet pentru tranzacțiile ACID, care permit efectuarea de modificări atomice ce acoperă familiile de coloane și, dacă este necesar, retractarea atomică a operațiunilor. Datele pot fi stocate în formă comprimată, alegând algoritmul de compresie corelat cu familia de coloane. Este posibilă setarea blocajelor la nivelul anumitor familii de coloane și ambalarea stocării în mod paralel fără a bloca execuția operațiunilor cu BD.

Funcționalități principale:

  • Suport pentru familiile de coloane (Column Families) — seturi izolate de date în format cheie/valoare. Fiecare familie de coloane utilizează propriile memtable, SSTable și jurnal WAL.
  • Tranzacții ACID care cuprind mai multe operațiuni cu familiile de coloane.
  • Optimizare pentru accesul paralel la date.
  • Suport pentru iteratori bidirecționali, care permit parcurgerea perechilor cheie/valoare înainte sau înapoi față de poziția selectată din stocare, folosind metoda de sortare stabilită inițial.
  • Suport pentru adăugarea propriilor funcții de comparare a cheilor. Există funcții de comparare încorporate memcmp, string și numeric.
  • Gestionarea jurnalului de operațiuni (WAL, Write-Ahead Log) și recuperarea automată a memtable-ului (stocare în memorie) din acest jurnal la pornire.
  • Utilizarea filtrilor Bloom pentru a minimiza accesele la stocare prin verificarea existenței cheii înainte de citirea din SSTable (stocare permanentă).
  • Suport pentru algoritmii Snappy, LZ4 și ZSTD pentru comprimarea înregistrărilor în stocarea SSTable și jurnalul WAL.
  • Posibilitatea de a defini timpul de viață al înregistrărilor (TTL) și excluderea automată a înregistrărilor expirate.
  • Trei moduri de sincronizare a datelor în RAM cu stocarea permanentă: NONE (cel mai rapid), BACKGROUND (echilibrat), FULL (cel mai de încredere).
  • Posibilitatea de a configura dimensiunea memtable, metodele de comprimare, filtrele Bloom, modul de sincronizare și parametrii de ambalare pentru fiecare familie de coloane.
  • API C simplu, care returnează 0 la finalizarea cu succes a operațiunii și -1 în caz de eroare.
  • Utilizarea SBHA (Sorted Binary Hash Array) pentru căutarea rapidă a datelor în SSTable, permițând determinarea offset-urilor blocurilor cu chei fără scanarea completă.
  • Format binar compact și portabil de reprezentare a bazei de date, care suportă versionarea.
  • Mecanisme încorporate de control al integrității, detectarea corupției datelor și recuperare.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster