Mobile-Menu

Speichertipp: Architektur für schreiblastige Analyse- und Observability-Workloads FrostDB als eingebettete Spaltendatenbank

Von Thomas Joos 2 min Lesedauer

Anbieter zum Thema

FrostDB fungiert als eingebettete Wide-Column-Datenbank mit spaltenorientierter Ablage und richtet sich auf Analyseabfragen über überwiegend schreiblastige Datenströme. Die Implementierung in Go integriert Apache Parquet für persistente Speicherung und Apache Arrow für die Ausführung analytischer Abfragen im Arbeitsspeicher. Das System befindet sich in einem frühen Entwicklungsstadium und gilt nicht als produktionsreif, adressiert jedoch gezielt Anforderungen aus Observability-Szenarien.

Die Wide-Column-Datenbank FrostDB unterstützt semi-strukturierte Schemata mit dynamischen Spalten.(Bild:  Midjourney / KI-generiert)
Die Wide-Column-Datenbank FrostDB unterstützt semi-strukturierte Schemata mit dynamischen Spalten.
(Bild: Midjourney / KI-generiert)

Die Datenbank FrostDB läuft als Bibliothek innerhalb eines Go-Prozesses und benötigt keinen separaten Serverdienst. Dieser Ansatz vereinfacht die Integration in bestehende Anwendungen und reduziert operative Abhängigkeiten. FrostDB unterstützt semi-strukturierte Schemata mit dynamischen Spalten. Neue Spalten erscheinen zur Laufzeit, sobald neue Dimensionen im Datenstrom auftreten. Diese Eigenschaft passt zu Telemetrie- und Metrikdaten mit variablen Attributen, bei denen sich die Anzahl der Dimensionen kontinuierlich ändert.

Spaltenlayout und Ausführungsmodell

Die Ablage erfolgt spaltenweise. Alle Werte einer Spalte liegen zusammenhängend vor, was Scan- und Aggregationsoperationen beschleunigt. Parquet übernimmt die persistente Speicherung und nutzt komprimierende Encodings zur Reduktion von Speicher- und Plattenbedarf. Arrow bildet die Grundlage für vektorisierte Abfrageausführung und stellt ein einheitliches Speicherformat für In-Memory-Verarbeitung bereit. Abfragen laufen über einen integrierten Query-Builder mit Optimierungen, die an DataFrame-ähnliche Modelle angelehnt sind.

Observability-Daten weisen häufig Dimensionen auf, die nicht vorab definiert sind. Zeitreihen identifizieren sich über Kombinationen von Labels, deren Schlüssel zur Laufzeit variieren. FrostDB behandelt solche Dimensionen als dynamische Spalten. Für jede neu auftretende Dimension erzeugt das System automatisch eine eigene Spalte. Diese Spalten bleiben strikt typisiert und profitieren von Dictionary- und Run-Length-Encoding. Dadurch bleibt die spaltenorientierte Verarbeitung erhalten, ohne auf Map-Strukturen zurückzugreifen.

Unveränderliche Daten und LSM-basierter Index

FrostDB unterstützt ausschließlich Schreib- und Lesezugriffe. Einmal geschriebene Daten lassen sich nicht ändern oder entfernen. Intern organisiert ein LSM-ähnlicher Index die Daten in mehreren Ebenen. Neue Daten landen zunächst als Arrow-Records in der ersten Ebene. Mit wachsendem Umfang konsolidiert der Index diese Daten schrittweise zu Parquet-Dateien in höheren Ebenen. Erreicht der Index eine definierte Speichergrenze, rotiert das System den Inhalt aus dem Speicher und schreibt ihn optional in ein angebundenes Speichermedium oder verwirft ihn vollständig.

Abfragepfad und Filtermechanismen

Bei einer Abfrage scannt FrostDB alle relevanten Indexteile. Parquet-Metadaten unterstützen die Selektion geeigneter Datenbereiche. Bloom-Filter sowie Minimal- und Maximalwerte pro Spaltengruppe begrenzen den zu verarbeitenden Datenumfang. Dieser Mechanismus reduziert die I/O-Last und beschleunigt analytische Abfragen über große Datenmengen. Das System implementiert Snapshot-Isolation mit Einschränkungen. Leseoperationen liefern keinen unmittelbaren Zugriff auf zuvor geschriebene Daten. Abfragen arbeiten auf einem stabilen Schnappschuss, der durch einen globalen Wasserstand definiert ist. Schreibtransaktionen erhalten fortlaufende Transaktionskennungen und werden in Batches freigegeben.

Abgrenzung und Einsatzgrenzen

FrostDB eignet sich für Go-basierte Anwendungen, die eine eingebettete Spaltendatenbank benötigen und mit unveränderlichen Datensätzen arbeiten. Dynamische Schemata und analytische Abfragen über Spalten stehen im Vordergrund. Anwendungen mit Bedarf an Lösch- oder Update-Operationen, zeilenorientierten Zugriffsmustern oder einem eigenständigen Datenbankdienst fallen außerhalb des vorgesehenen Einsatzbereichs.

Aktuelles eBook

Storage-Software als Effizienzbooster

eBook Storage-Software als Effizienzbooster
eBook „Storage-Software als Effizienzbooster“
(Bild: Storage-Insider)

Mit der geeigneten Storage-Software kann sich ein Unternehmen einen Effizienzbooster ins Haus holen oder in der Cloud abonnieren. Dieser Booster steigert nicht nur die Performance der geschäftskritischen Anwendungen, sondern optimiert auch die Kosten der bereits installierten Speichersysteme.

Die Themen im Überblick:

  • Herausforderungen eines modernen Speichersystems
  • Methoden und Technologien effizienter Speichersysteme
  • Effizienter Speicher mit Pure Storage, AWS, Cohesity und Dell

(ID:50684956)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Data-Storage und -Management

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung