KarelDB: Neue relationale Datenbank für Apache Kafka geht an den Start

Die Datenbank nutzt Kafkas Key-value Store KCache als persistenten Speicher und lässt sich sowohl embedded wie auch als Server betreiben.

In Pocket speichern vorlesen Druckansicht 33 Kommentare lesen
Apache Kafka v1.0.0 verfügbar
Lesezeit: 2 Min.
Von
  • Matthias Parbel

Als relationale Datenbank, die auf einer Reihe von Open-Source-Komponenten aufbaut, tritt KarelDB gegen die etablierte Konkurrenz an. Die von Robert Yokota, Software Engineer beim Streaming-Plattform-Anbieter Confluent, initiierte Datenbank lässt sich sowohl embedded wie auch als Server betreiben und nutzt den Key-value Store KCache von Apache Kafka als persistenten Speicher.

KarelDB liegt aktuell als Version 0.1.6 in einem noch frühen Entwicklungsstadium vor und ist lediglich als Single-Node-DB ausgelegt, die sich zwar replizieren, aber nicht als verteilte Datenbank einsetzen lässt.

Die primäre Intention hinter KarelDB ist es, den Schlüssel-Werte-Speicher von Kafka um eine vollfunktionsfähige relationale Datenbank zu erweitern. Dazu bildet KCache nicht nur den Kern der neuen DB, sondern stellt außerdem eine Map-basierte API zur Verfügung, die eine einfache Verwendung des integrierten Key-value Store verspricht.

Standardmäßig ist KCache dabei als Cache für RocksDB konfiguriert, um KarelDB auch für größere Datensätze nutzen zu können und die Start-up-Zeiten kurz zu halten. Alternativ lässt sich KCache aber auch als In-Memory Cache konfigurieren.

Neben Kafka und KCache nutzt KarelDB noch eine Reihe weiterer Open-Source-Komponenten, darunter vor allem Apache Avro, Apache Calcite, Apache Omid sowie Apache Avatica, die wichtige Funktionen und Dienste ergänzen. Das SQL-Framework Calcite erlaubt beispielsweise das Parsen, Optimieren und Ausführen von Abfragen direkt im Datenspeicher. Calcite verarbeitet die Abfragen mit der integrierten Enumerable Calling Convention, die es ermöglicht, den Datenspeicher als einen Satz von Tupeln darzustellen, auf die sich über eine Iterator-Schnittstelle zugreifen lässt. Dabei baut KarelDB auf das kompakte Binärdatenformat von Avro und dessen Unterstützung für Schema Evolution.

Um die von relationalen Datenbanken wie PostgreSQL oder Oracle bekannte Isolierung von Snapshots mittels MVCC (Multi-version Concurrency Control) bereitstellen zu können, nutzt KarelDB das ursprünglich für HBase entwickelte Framework Apache Omid, das auch das Transaktionsmanagement auf dem Key-Value Store abdeckt. In den Fällen, in denen KarelDB nicht als Embedded-Datenbank, sondern als Server arbeiten soll, kommt Apache Avatica zum Einsatz, um die JDBC-Anbindung über das RPC-Protokoll (Remote Procedure Call) zu gewährleisten.

Weitergehende Informationen zu KarelDB finden sich im Blogbeitrag von Robert Yokota sowie auf der Projektseite bei GitHub. (map)