Der integrierte Speicher-Engine TidesDB 1.0, die ACID-Transaktionen unterstützt, ist jetzt verfügbar.

Die erste stabile Version des Projekts TidesDB wurde veröffentlicht, das eine Bibliothek zur Speicherung von Daten im Schlüssel/Wert-Format entwickelt. Das Projekt kann sowohl als eigenständige Engine betrieben als auch in Anwendungen integriert werden. Zu den Hauptfunktionen gehören die Unterstützung von ACID-Transaktionen und eine Optimierung für die effiziente Speicherung von Daten auf Flash-Speicher und im Arbeitsspeicher. Der Code ist in C geschrieben und wird unter der MPL 2.0-Lizenz verteilt. Bindings sind für die Sprachen C++, Go, Java, Python, Rust, Lua und JavaScript verfügbar.

Für die Speicherung von Daten wird die Struktur des LSM-Baums (Log-Structured Merge Tree) verwendet, die hohe Leistung bietet. nicht nur beim Lesen, sondern auch beim Ausführen von Schreib- und Änderungsoperationen. Leseoperationen blockieren weder das Schreiben noch das Lesen von Daten, während Schreiboperationen nur die Spaltenfamilie blockieren, in der das Schreiben erfolgt. Zur weiteren Beschleunigung der Lesezugriffe werden Indizes und Caching auf Basis von Bloom-Filtern unterstützt (diese ermöglichen die Überprüfung des Vorhandenseins in einer Menge, wobei falsche negative Ergebnisse zugelassen werden, aber bestehende Elemente nicht übergangen werden).

Es gibt eine vollständige Unterstützung für ACID-Transaktionen, die atomare Änderungen über Spaltenfamilien hinweg ermöglichen und bei Bedarf atomare Rückrolloperationen unterstützen. Daten können komprimiert gespeichert werden, wobei der Algorithmus für die Kompression an die Spaltenfamilie gebunden ist. Es ist möglich, auf der Ebene einzelner Spaltenfamilien und Storage-Packs im parallelen Modus ohne Blocking von Datenbankoperationen Sperren zu setzen.

Hauptfunktionen:

  • Unterstützung für Spaltenfamilien (Column Families) — isolierte Datenmengen im Schlüssel/Wert-Format. Jede Spaltenfamilie verwendet ihre eigenen Memtable, SSTable und WAL-Log.
  • ACID-Transaktionen, die mehrere Operationen auf Spaltenfamilien umfassen.
  • Optimierung für parallelen Datenzugriff.
  • Unterstützung von bidirektionalen Iteratoren, die das Durchlaufen von Schlüssel-Wert-Paaren vorwärts oder rückwärts bezogen auf eine gewählte Position im Speicher unter Verwendung der ursprünglich festgelegten Sortiermethode ermöglichen.
  • Unterstützung für die Hinzufügung eigener Schlüsselvergleichsfunktionen. Eingebaute Vergleichsfunktionen wie memcmp, string und numeric sind verfügbar.
  • Protokollierung von Operationen (WAL, Write-Ahead Log) und automatisches Wiederherstellen der memtable (Speicher im RAM) aus diesem Protokoll beim Start.
  • Verwendung von Bloom-Filtern zur Minimierung von Zugriffen auf den Speicher durch Überprüfung der Schlüsselverfügbarkeit vor dem Lesen aus SSTable (permanentem Speicher).
  • Unterstützung der Algorithmen Snappy, LZ4 und ZSTD zur Kompression von Datensätzen im SSTable und WAL-Log.
  • Möglichkeit, die Lebensdauer von Datensätzen (TTL) zu definieren und abgelaufene Datensätze automatisch auszuschließen.
  • Drei Modi für die Synchronisierung der Daten im RAM mit dem permanenten Speicher: NONE (am schnellsten), BACKGROUND (ausgewogen), FULL (am zuverlässigsten).
  • Die Möglichkeit, die Größe der Memtable, Komprimierungsmethoden, Bloom-Filter, Synchronisationsmodi und Verpackungsparameter für jede Spaltenfamilie anzupassen.
  • Eine einfache C-API, die 0 bei erfolgreicher Ausführung der Operation und -1 bei einem Fehler zurückgibt.
  • Verwendung von SBHA (Sorted Binary Hash Array) für eine schnelle Datenabfrage in SSTable, die es ermöglicht, die Offsets der Blöcke mit Schlüsseln ohne vollständiges Scannen zu bestimmen.
  • Ein kompaktes, tragbares binäres Datenbankdarstellungsformat, das Versionierung unterstützt.
  • Eingebaute Mechanismen zur Integritätskontrolle, zur Erkennung von Datenbeschädigungen und zur Wiederherstellung.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster