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.
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.
Key-Value Store mit relationaler DB
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.
Aus dem Open-Source-Baukasten
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 [1] sowie auf der Projektseite bei GitHub [2]. (map [3])
URL dieses Artikels:
https://www.heise.de/-4543804
Links in diesem Artikel:
[1] https://yokota.blog/author/rayokota/
[2] https://github.com/rayokota/kareldb
[3] mailto:map@ix.de
Copyright © 2019 Heise Medien