Apache Drill – SQL für alles

Die Analyse großer Datenmengen ermöglicht eine Vielzahl neuer Projekte – sofern man die nötigen Tools beherrscht. Apache Drill soll als Vermittler denjenigen helfen, die sich nicht von SQL als Abfragesprache verabschieden wollen.

Werkzeuge  –  7 Kommentare
Apache Drill ? SQL für alles !?

Big Data und NoSQL zählten in den vergangenen Jahren zu den meistgenutzten IT-Buzzwords. Mittlerweile haben sich hinter ihnen eine Vielzahl freier und kommerzieller Angebote entwickelt, die Entwicklern Antwort auf die Frage nach der Verarbeitbarkeit von immer größeren Datenmengen geben sollen. Unter dem Label Data Science sind zudem neue Jobbezeichnungen entstanden, die Berufe für Spezialisten in der Big-Data-Welt beschreiben. Das Hadoop-Ökosystem bildet in vielen Big-Data-Projekten die technische Basis für ihre Arbeit.

Die IT-Welt besteht allerdings nicht nur aus Big-Data-Spezialisten. Daneben gibt es eine deutlich höhere Zahl von Business-Analysten und Mitarbeitern der Fachbereiche, deren Interesse an der Datenflut mindestens genauso groß ist, da sie sich von einer Auswertung neue Erkenntnisse zu Kunden, Produkten und ähnlichem erhoffen. Mangels technischen Big-Data-Wissens sind die Fachbereichsmitarbeiter bei solchen Auswertungen auf ihnen bekannte BI-Tools angewiesen. Diese Werkzeuge sind in vielen Fällen mit einfachen GUIs ausgestattet, mit denen sich entweder direkt SQL-Abfragen durchführen oder Benutzeranfragen in SQL übersetzen lassen. Aus technischer Sicht spielt die Abfragesprache also eine Schlüsselrolle als Schnittstelle zwischen den Fachanwendern und den IT-Systemen.

Im NoSQL-Umfeld spiegelt sich der Konflikt besonders gut wider, der durch die Big-Data-Systeme und Entwickler auf der einen und die Bedürfnisse der Fachanwender auf der anderen Seite entstanden ist. Aus technischer Datenbanksicht haben die NoSQL-Systeme viele Verbesserungen gegenüber den klassischen relationalen Datenbanken gebracht. Erst durch sie lassen sich in vielen Projekten die immer größer werdenden Datenmengen angemessen verarbeiten. NoSQL-Datenbanken sind daher insbesondere dann eine Alternative zu relationalen Angeboten wie Oracle und DB2, wenn zentrale Features der relationalen Konkurrenten wie die ACID-Eigenschaften (Atomarität, Konsistenz, Isolation und Dauerhaftigkeit) nicht zwingend erforderlich sind. Stattdessen lässt sich von der Flexibilität bei der Datenablage in NoSQL-Datenbanken Gebrauch machen.

Bedarf an SQL

Aus Anwendersicht ist NoSQL oft nicht wünschenswert, in manchem Projekt möglicherweise sogar ein K.O.-Kriterium. In der Folge kam schnell "Not only SQL" als alternative Bezeichnung auf. Am grundlegenden Dilemma, dass SQL als Standardsprache der relationalen Datenbankwelt nicht (ausreichend) in Verbindung mit NoSQL-Datenbanken einsetzbar ist, ändert eine solche Namensänderung aber nichts.

Auch in der Big-Data-Welt stellen mangelhafte Optionen zum Einsatz von SQL ein Problem dar. Hadoop mit den diversen Tools seines Ökosystems bietet zwar viele Möglichkeiten, umfangreiche Datenströme zu verarbeiten. Sollen fachliche Anwender die Datenbestände aber mit ihren BI-Tools analysieren, ist häufig viel Vorarbeit in Form von Datenformatanpassungen und Konsolidierung in einem zentralen System nötig. Die Bedeutung von MapReduce als Abfragesprache in Hadoop-Systemen hat nicht nur wegen der Komplexität deutlich abgenommen. Auch die mangelnden Kenntnisse der Technik beziehungsweise die fehlende Bereitschaft in der IT-Welt, sich in sie einzuarbeiten, hat dabei eine wichtige Rolle gespielt.

Die Situation lässt sich mit Fremdsprachenkenntnissen im realen Leben vergleichen. Englisch als erste Fremdsprache ist in den meisten Ländern der Normalfall. Will man sein Produkt oder seine Dienstleistung weltweit anbieten, führt kein Weg daran vorbei, das Produkt in Englisch zu entwickeln, zu vermarkten und zu dokumentieren. Kann ein Unternehmen das nicht, ist ein Dolmetscher zu suchen, der dafür sorgt, dass sich das Entwickelte in englischer Sprache verwenden lässt und das Zusammenspiel mit den Produkten anderer Anbietern möglich ist. Für die Weltsprache SQL will Apache Drill die Rolle eines solchen Dolmetschers übernehmen.

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.

Fazit

Gestartet ist Apache Drill ursprünglich als ein "SQL on Hadoop". Dafür kann es zwar immer noch eingesetzt werden, allerdings lässt es sich auch ohne das Big-Data-Framework nutzen. Prinzipiell ist Drill immer eine Alternative, wenn man auf mehr als eine Datenquelle mit einem einzigen SQL-Befehl zugreifen will. Dabei können die Datenquellen technisch ganz unterschiedlich sein, denn Drill ist in der Lage, eine Vermittlerrolle einzunehmen.

Apache Drill könnte darüber hinaus einen Ausweg aus dem Dilemma vieler Personalabteilungen beziehungsweise Projektleiter bedeuten, die auf dem stark nachgefragten Markt nach Big-Data-Spezialisten nicht ausreichend Personal finden beziehungsweise dieses nicht bezahlen können oder wollen. Durch die Drill-Anbindung eines Projekts können Facharbeiter große Datenmengen besser nutzen, ohne Map Reduce oder ähnliche Techniken im Detail beherrschen zu müssen und sind so eher in der Lage, neue Big-Data-Projekte anzustoßen. Wer sich in die Möglichkeiten von Drill einarbeiten will, findet auf den Drill-Webseiten eine Liste von Tutorials. (jul)

Rudolf Jansen
ist Diplom-Informatiker aus Aachen und arbeitet als freiberuflicher Softwareentwickler und Journalist. Seine Tätigkeitsschwerpunkte liegen in den Bereichen Java, C++ und Datenbanken.