Wie man MongoDB-Datenbanken mit Standard-SQL-Anweisungen abfragt

Wie man MongoDB-Datenbanken mit Standard-SQL-Anweisungen abfragt

Motivation

Die Welt der Datenbanken und insbesondere der Big-Data-Analyse bedient sich weitgehend der mit NoSQL eingeführten Beispiele. Eine der wichtigsten Errungenschaften ist es, eine flexiblere Herangehensweise an die Datenstruktur zu ermöglichen. Ein weithin bekannter Vertreter dieses Ansatzes ist MongoDB (Mongo ist abgeleitet vom engl. „humongous”, was soviel wie „gigantisch” bedeutet). NoSQL, was eine Abkürzung für „Not only SQL” ist, bietet die Möglichkeit, Datensätze (Collections) zu haben, die aus Einträgen bestehen, welche wiederum nur einen winzigen Satz von Eigenschaften teilen. Jeder einzelne aber hat einige zusätzliche Eigenschaften, die für ihn wichtig sind und zusammen gespeichert werden. Hier ist ein kurzes Beispiel, wie verschiedene Einträge aus der gleiche Sammlung aussehen können.

Leider ist diese Flexibilität mit zwei Kompromissen bei der Implementierung und der tatsächlichen Nutzung von MongoDB verbunden. Am Anfang steht das Problem der Inkompatibilität mit ANSI-SQL und seinen Derivaten. Wenn es keine tabellarische Struktur gibt und nicht alle Einträge einer Collection bestimmte Eigenschaft haben, dann kannst du die typische SQL-Syntax nicht verwenden.

Ein noch gravierenderer Nachteil sind die Hindernisse, die du überwinden musst, wenn du eine MongoDB-Sammlung mit einer regulären relationale Datenbank kombinieren und auswerten willst. Streng genommen ist das möglich. Es erfordert aber viel Zeit. Denn es sind spezielle Prozesse erforderlich, die eine Transformation der gegebenen NoSQL-Datenbank ermöglichen, so dass du ein gemeinsames Datenmodell hast, das genau deinen Bedürfnissen entspricht.

Der Data-Virtuality-Vorsprung

Die gemeinsame manuelle Bearbeitung entfällt, wenn der Data-Virtuality-Server im Einsatz ist. Durch die kohärente Struktur der Tabellen und die aufwendige Transformation, welche die Datenvirtualisierung automatisch durchführt, kann MongoDB einfach mit regulären SQL-Anweisungen aufgerufen und abgefragt werden. Der Inhalt kann mit anderen Datenquellen mit relationalen Datenbanken kombiniert werden. Abgesehen von der Verbindung zu NoSQL-Quellen und der Strukturerkennung durch Data Virtuality sind keine weiteren Schritte notwendig.

Schritt 1 – Deine Verbindung mit der MongoDB-Datenquelle

Das Hinzufügen der Datenquelle ist denkbar einfach. Dafür gehst du in den Dialog, um eine neue Datenquelle hinzu zu fügen und wählst den Eintrag „MongoDB”. Gib deine Zugangsdaten und die korrekten Verbindungsparameter ein – den Rest überlässt du einfach Data Virtuality. Für dieses Tutorial wurde ein einfacher MongoDB-Server verwendet, sodass keine zusätzlichen Anmeldedaten benötigt wurden. Normalerweise musst du diese natürlich angeben.

Rechtsklick auf “Data Sources”:

Wähle “MongoDB” aus der Liste aus:

Schritt 2 – Abwarten und Tee trinken

Nachdem du auf „Finish” geklickt hast, ruft der Data-Virtuality-Server alle notwendigen Informationen ab, um eine virtuelle Datenstruktur relational aufzubauen. Das Datenschema wird dir präsentiert und kann wie eine gewöhnliche relationale Datenbank verwendet werden. Dieser Prozess kann jedoch einige Zeit in Anspruch nehmen. Denn die Eigenschaften, die in den Dokumenteinträgen der Sammlung verkommen können, müssen zunächst erstmal gefunden werden. Wenn du mehr über die Struktur der Datenquellen weißt, kannst du diese nutzen und dem Server mitteilen, wie viele Dokumente maximal analysiert werden müssen, um das Schema zu erhalten. Zusätzlich ist es möglich, die maximale Tiefe einzustellen, die innerhalb der Belegeinträge durchsucht werden soll.

Wenn der Server fertig ist, stehen dir verschiedene virtuelle Tabellen mit einem virtuellen Schema zur Verfügung.

Schritt 3 – Verwendung

Anschließend kannst du sofort mit dem Abfragen beginnen, um die Daten aus deiner NoSQL-Datenquellen mit den vertrauten SQL-Ausdrücken auszuwerten. So kannst du dir  z. B. alle Daten der Sammlung ansehen:

Oder du interessierst dich vielleicht nur für alle Personen in der Datenbank, die jemals ein bahnbrechendes Papier in der Geschichte veröffentlicht haben. In diesem Beispiel holen wir uns den Erfinder der berühmten Turingmaschine.

Jetzt kannst du SQL-Abfragen erstellen, welche die MongoDB-Sammlung mit allen anderen relationalen Datenbanken kombinieren. Im Ergebnis erhältst du  leistungsstarke Datenanalysen mit Berichten, die Geschäftsinformationen oder Forschungsergebnisse nutzen.