Vasily Merkushev - stock.adobe.c
Big Data mit Apache Calcite managen und analysieren
Mit dem Open Source Tool Apache Calcite können Daten aus verschiedenen Quell-, Management- und Datenbanksystemen für die Analyse zusammengefasst werden.
Wenn in Unternehmen verschiedene Datenquellen und Datenbanken für die Analyse zum Einsatz kommen, ist in der Regel eine Vereinheitlichung der Systeme notwendig. Vor allem, wenn verschiedene Analyseprogramme auf die Quellsysteme zugreifen sollen, ist es einfacher, schneller und sicherer, ein zentrales System für die Datenanalyse zu verwenden, das sich mit den Analyseprogrammen verbinden kann und selbst mit den verschiedenen Datenquellen verbunden ist.
Diese Aufgabe kann Apache Calcite übernehmen. Calcite ist die Schnittstelle zwischen Analysesystemen und Benutzern, die Abfragen erstellen und den verschiedenen Datenquellen und Datenbanken im Unternehmen. Der Quellcode des Projektes ist auf GitHub verfügbar.
Apache Calcite bietet viele Funktionen, die ein Datenbankmanagementsystem (DBMS) auszeichnen, speichert selbst aber keine Daten. Das System bietet einen SQL-Parser und -Validator, einen anpassbaren Optimierer, inklusive logischer und algebraischer Operatoren, verschiedene Transformationsalgorithmen sowie zahlreiche Adapter für die Ausführung von SQL-Abfragen unter anderem über Cassandra, Druid, Elasticsearch, MongoDB und Kafka. Die Anbindung von externen Systemen ist relativ einfach. Calcite unterstützt außerdem das Lesen von Modellen im JSON-Format.
Apache Calcite im Hadoop- und SQL-Umfeld
Vor allem bei Datenanalyse im Big-Data- und Hadoop-Umfeld kann Apache Calcite hilfreich sein. Das Projekt unterstützt Java. Eine Verbindung zwischen entsprechenden Projekten ist unkompliziert über den integrierten JDBC-Treiber möglich.
Bei Apache Calcite handelt es sich in erster Linie um ein Framework für die Datenverwaltung. Calcite ist aber keine Datenbank, sondern bindet sich an die verschiedenen Datenbanken im Unternehmen an. Es dient für Analysewerkzeuge und zur Abfrage als Zentrale, welche die verschiedenen Daten von anderen Quellen zusammenfassen kann.
Wenn im Unternehmen verschiedene Datenquellen und Analyseprogramme zum Einsatz kommen, vereinfacht Apache Calcite die Verbindung dieser Programme, erhöht die Abfragegeschwindigkeiten und senkt gleichzeitig die Belastung der Datenquellen. Das gilt auch, wenn SQL-Abfragen von verschiedenen Datenquellen genutzt werden sollen.
Viele Analysesysteme und Datenbanken arbeiten mit Calcite zusammen. Dazu gehören ebenfalls andere Apache-Projekte, welche für den Big-Data-Bereich zum Einsatz kommen, zum Beispiel Hive, Flink, Drill, Storm und Samza.
Die Verwendung von Calcite vereinfacht die Analyse, da die verschiedenen Systeme keine verschiedenen Datenquellen nutzen müssen, sondern über Apache Calcite alle Daten in der Form erhalten, in der sie diese benötigen. Das Tool kann Abfragen für Analysen und andere Systeme auf den verschiedenen Quellsystemen durchführen und danach Benutzern und Analysesystemen zur Verfügung stellen.
JDBC-Treiber und Abfrage-Optimierer
Die Verbindung zwischen den verschiedenen Analysesysteme erfolgt über den JDBC-Treiber, der Bestandteil des Projektes ist. Calcite kann Abfragen beschleunigen, vereinfachen und die Ergebnisse den angebundenen Systemen die gewünschten Daten zur Verfügung stellen.
Calcite verfügt über zwei Optimierer. HepPlanner ist ein heuristischer Planer und ein regelbasierter Optimierer, der versucht, Abfragen eine Reihe von Regeln zuzuordnen. Diese Regeln sollen die Leistung durch verschiedene Methoden verbessern. Die Funktion ähnelt der des RBO in Oracle.
VolcanoPlanner ist ein kostenbasierter Optimierer, der verschiedene Regeln durchläuft und sie in unterschiedlichen Kombinationen auf die Abfrage anwendet, bis er einen Plan mit den effizientesten Kosten findet. Mit dem Planer können die verschiedenen Plan-Permutationen ermittelt werden. Der Optimierer stoppt nach einer bestimmten Anzahl von Iterationen oder wenn sich die Kosten während der Durchläufe nicht mehr verbessern.
SQL-Unterstützung in Apache Calcite
Apache Calcite unterstützt zahlreiche SQL-Dialekte, sodass das System hier eine gute Ergänzung ist, und gleichzeitig Datenquellen, vor allem andere SQL-Datenbanken, entlastet. Viele SQL-Befehle und Optionen stehen in Apache Calcite uneingeschränkt zur Verfügung. Calcite verwendet Optimierungsregeln, um JOIN- und GROUP BY-Operationen auf die Quelldatenbank zu übertragen.
Die einzelnen Möglichkeiten sind in der Dokumentation des Projektes zu finden. Entwickler und Datenanalysten übergeben für Abfragen mit Apache Calcite das Schema und die Tabellen der Quelldatenbank. Danach übersetzt Calcite die Abfragen und führt sie aus.
Die Verbindung zu den Datenquellen erfolgt über Adapter. Welche Adapter aktuell zur Verfügung stehen, ist auf der Projektseite zu finden. Die Analyseanwendungen binden Entwickler wiederum über den erwähnten JDBC-Treiber an Calcite an.
Tutorial: Apache Calcite installieren und einsetzen
Die Entwickler zeigen auf der Projekteseite über ein Tutorial, wie die Installation des Systems funktioniert, und wie sich erste Abfragen erstellen lassen. Neben verschiedenen Linux-Systemen lässt sich Apache Calcite auch in Windows einsetzen. Wer sich mit den Möglichkeiten von Apache Calcite auseinandersetzen will, sollte das Tutorial mit Beispieldaten durcharbeiten. Die Entwickler stellen dazu Beispieldaten zur Verfügung. Auf der Seite Codetinkering ist ebenfalls ein Tutorial zu finden, das Beispieldaten und Beispielabfragen enthält.