Apache Drill – SQL für alles

Apache Drill

Vermittler zwischen den Welten

Apache Drill genießt seit 2014 den Status eines Top-Level-Projekts der Apache Software Foundation (ASF). Im Mai 2015 wurde Version 1.0 veröffentlicht, mit der die Entwickler ihre Schöpfung als produktionsreif ansehen. Die Ursprünge von Drill liegen im Projekt Dremel, einer Google-Eigenentwicklung mit dem Ziel, Hadoop-Analysen schneller durchführen zu können als das mit MapReduce möglich ist. Dremel wird seit 2006 Google-intern eingesetzt, das Dremel-Konzept dagegen ist öffentlich verfügbar. Zum Zeitpunkt der Freigabe des vorliegenden Artikels liegt Drill in Version 1.7 vor.

Zwei der Beschreibungen von Apache Drill lauten "SQL-on-anything/SQL-on-everything layer" und "Open Source Schema Free SQL Engine". An ihnen lassen sich die grundlegenden Eigenschaften von Drill gut erkennen. Zunächst ist Apache Drill ein Open-Source-Produkt mit einer zugehörigen Community. Es ist personell stark von MapR geprägt. Das Unternehmen ist als Anbieter einer Hadoop-Distribution bekannt und hat sich unter anderem durch den Einsatz seines Gründers Ted Dunning stark in der Drill-Entwicklung engagiert. Viele Beiträge zum Drill-Sourcecode kommen von aktuellen und ehemaligen MapR-Mitarbeitern, was unter anderem zu einer Integration in die MapR-eigene Hadoop-Distribution geführt hat. Drill lässt sich allerdings auch mit anderen Distributionen und komplett außerhalb von Hadoop verwenden.

Die zentrale Aufgabe von Drill ist der Einsatz als zusätzliche Schicht zwischen dem fachlichen Anwender und seinen BI-Tools auf der einen und diversen Datenbeständen auf der anderen Seite. Letztere können in unterschiedlichen Formaten und Produkten vorliegen. Es kann sich dabei um klassische relationale Datenbanken, um NoSQL-Systeme, um Datenbestände in Hadoop-Systemen oder um Betriebssystemdateien auf lokalen oder Cloud-Rechnern handeln. Drills Aufgabe ist es, die SQL-Abfrage des Anwenders in die für die angefragten Datenquellen passenden Bestandteile aufzuteilen und dabei ihre Formatbesonderheiten zu berücksichtigen (zum Beispiel Parquet- oder JSON-Dateien).

An der Stelle kommt der Begriff Schemafreiheit ins Spiel: Im Gegensatz zu relationalen Datenbanken müssen die abzufragenden Daten nicht zwingend in einem vorab definierten Schema zur Verfügung stehen. Wer in der Vergangenheit schon einmal vor der Aufgabe stand, Daten aus unterschiedlichen Quellen und vor allem in unterschiedlichen Formaten auf einen gemeinsamen Stand zu bringen, der es erlaubt, komplexe Analysen auf dem Gesamtbestand durchzuführen, kennt den damit verbundenen Aufwand: die Arbeit beginnt mit der Suche nach einem Zielformat, das für alle Quelle passend ist, das heißt in das alle Daten ohne beziehungsweise mit vertretbarem Informationsverlust überführbar sind. Ist eines gefunden, sind pro Inputformat Transformationsskripte zu entwickeln und zu testen. Sind abschließende Konsistenzchecks durchlaufen, kann die Datenanalyse starten. Ein Großteil der verfügbaren Zeit ist dann aber bereits für die Formatkonsolidierung erforderlich gewesen. Diese zeitaufwändigen Schritte verspricht Drill zu automatisieren, sodass der Anwender die gewonnene Zeit dann in die Datenanalyse investieren kann.

Anwendungsfälle

Apache Drill implementiert den kompletten ANSI-SQL-2003-Standard und ermöglicht das Durchführen von Ad-Hoc-Queries. Die abzufragenden Daten müssen zuvor nicht transformiert werden, können folglich dort bleiben, wo sie sind, und auch das ursprüngliche Format muss nicht geändert werden, sofern Drill es beherrscht (eine entsprechende Formatliste ist in der Dokumentation zu finden).

So umfangreich wie die Liste der unterstützten Formate sind auch die Anwendungsfälle. Beginnend mit einer zusätzlichen Abfragemöglichkeit für Anwender, die nur SQL einsetzen können oder wollen, über Logdateianalysen – optional mit Verknüpfungen zu beliebigen in JDBC-/ODBC-Quellen liegenden Stammdaten – bis hin zu komplexen Auswertungen auf Hadoop-Systemen ist vieles denkbar.

Ein wichtiges Thema im Umfeld von Big Data ist der Datenschutz. Umfassende Datenmengen können schnell Begehrlichkeiten nach Inhalten wecken, die mit geltenden Datenschutzrichtlinien nicht vereinbar sind. SQL bietet mit dem Konzept der Views eine Option an, Zugriffsrechte in Abhängigkeit der Zielgruppe einzuschränken. Durch die SQL-Kompatibilität einer vorgeschalteten Drill-Schicht lässt es sich auch für Big-Data-Systeme verwenden. Entwickler können für jede Zielgruppe eine separate View erstellen, die ihr nur den Zugriff auf die Daten ermöglicht, die sie sehen und verarbeiten darf. Eine Trennung der Ursprungsdaten beispielsweise durch eine Aufteilung der Datenbestände in öffentlich zugängliche und geschützte Bestandteile oder eine vorgeschaltete Anonymisierung sensibler Daten ist nicht nötig.