NoSQL Datenbanken im Vergleich

Eine kurze Einleitung

In fast allen Projekten, egal ob Web, Desktop oder Mobile, kommt irgendeine Datenbank-Technologie zum Einsatz. Die Wahl der richtigen Technologie ist allerdings nicht immer ganz einfach, und Software Architekten müssen immer einen Überblick über den aktuellen Marktstand haben und die Vor- und Nachteile der einzelnen Systeme kennen. Eine erste grobe Einteilung kann man zunächst in SQL und NoSQL Datenbanken vornehmen:

  1. SQL: strukturierte relationale Datenbanken
  2. NoSQL: nicht-relationale Datenbanken, die oft Dokumenten-orientiert sind

Warum NoSQL?

SQL Datenbanken sind nach wie vor die am häufigsten anzutreffende Gruppe. Hier gibt es seit Jahrzehnten etablierte Player wie z.B. MySQL (die weltweit beliebteste Open Source Datenbank) oder MariaDB (entwickelt von den ursprünglichen MySQL-Entwicklern), aber auch die bekannten Hersteller wie Microsoft oder Oracle. Man findet die beiden erst genannten Open Source Lösungen häufig in Projekten, die auf Basis von PHP oder Python entstehen. Und wenn man bedenkt, dass PHP laut einer Studie von W3techs, in 83,5% aller Webseiten zum Einsatz kommt, erkennt man schnell, dass wir hier über wirklich große Zahlen sprechen.

Aber in den letzten Jahren haben NoSQL Datenbanken spürbar an Beliebtheit gewonnen. Und das nicht nur für extrem umfangreiche Projekte, sondern auch in Fällen, in denen horizontale Scalability wichtig ist. Wir haben bereits in früheren Beiträgen über JavaScript Frameworks berichtet, und gerade im Zusammenhang mit dem Wachstum von JS, node.js und express.js stößt man zunehmend auf NoSQL Erwähungen in diversen Artikeln, Dokumenten, Foren oder Tutorials.

Wir gehen im weiteren Text dieses Beitrags davon aus, dass Sie die grundlegenden Unterschiede zwischen SQL und NoSQL bereits kennen und möchten ein wenig auf die Besonderheiten einiger der bekanntesten NoSQL Vertreter eingehen.

Top NoSQL Datenbank Engines

  1. MongoDB

Hierbei handelt es sich um die momentan am häufigsten eingesetzte NoSQL Plattform. Sie wird von Unternehmen wie Expedia, Forbes, MetLife oder TheGuardian genutzt, um ihre Dienste in neuen Bereichen wie dem Internet of Things (IoT) oder Business Intelligence (BI) anzubieten. Man findet die Open Source, Plattform-übergreifende und Dokumenten-basierte Datenbank häufig in Technologie-Stacks wie SAILS oder MEAN.

  1. CouchDB (Apache)

CouchDB bietet eine intuitive HTTP/JSON API und eignet sich hervorragend in Fällen, in denen beste Performance und große Zuverlässigkeit wichtig sind. Und wie es für viele Apache Projekte üblich ist, gibt es auch hierfür eine ziemlich solide Dokumentation.

  1. Apache HBase

Richtig, auch das ist eine NoSQL Engine von Apache. Ihr Ziel ist das Verwalten von extrem großen Tabellen (Milliarden von Zeilen und Millionen von Spalten) in großen Hardware-Clustern.

  1. Amazon DynamoDB

Amazon bietet DynamoDB als Cloud-basierte NoSQL Lösung an für Anwendungen, die unabhängig von ihrer Größe eine sehr gute Performance brauchen. Mithilfe der Amazon Web Services kann die Datenbank schnell und einfach überwacht und skaliert werden. DynamoDB unterstützt sowohl Key-Value als auch Dokumenten-basierte Ansätze und wird u.a. von Samsung, Netflix und CapitalOne eingesetzt.

  1. CouchBase

Besondere Merkmale von CouchBase sind ein flexibles Datenmodell, gute Indizierung und eine Volltext-Suche. Diese auf JSON Dokumenten gestützte Datenbank lässt sich wirklich gut für mobile Anwendungen, eCommerce Transaktionen oder Analytics Dienste einsetzen.

  1. Oracle NoSQL Database

Bei der NoSQL Datenbank von Oracle handelt es sich um eine gut skalierbare und verteilte Lösung mit einem Fokus auf zuverlässigen, hoch-verfügbaren und gleichzeitig flexiblen Datenmanagement. Dabei werden konfigurierbare Sets von Speichermodellen unterstützt.

  1. Cassandra DB (Apache)

Und noch eine Lösung von Apache. Damit wird klar, dass es hier einen wirklich großen Erfahrungsschatz im Bereich NoSQL Datenbanken gibt. Das Besondere bei Cassandra: Es handelt sich um eine dezentralisierte, verteilte und Spalten-basierte Datenbank Engine, die einen Zugriff mit sehr geringer Latenz erlaubt.

  1. Redis 

Redis darf auf keinen Fall in dieser Sammlung fehlen, da sie eine der beliebtesten NoSQL Lösungen für Key-Value Implementierungen ist. Sie unterstützt Datenstrukturen wie Strings, Hashes, Listen, Sets, sortierte Sets mit Range Queries, Bitmaps, Hyperlogs und Geo Indizes mit Radius Queries.

Zu guter Letzt…

In größeren Projekten werden häufig SQL und NoSQL Technologien gemeinsam eingesetzt. Während SQL nach wie vor die häufigste Wahl in Web und mobilen Projekten ist, kann NoSQL die bessere Option sein, wenn es darum geht, schnell und dynamisch zu skalieren und wenn der Quellcode im Projekt häufigen Änderungen unterliegt. Es verwundert daher auch nicht, dass NoSQL gerade in Agilen Projekten gerne gewählt wird, weil es gut zu kurzen Zyklen passt und einer dynamischen Arbeitsweise entspricht.

Und noch ein letzter Hinweis: Der Vollständigkeit halber (und weil die Begriffe bisher immer wieder aufgetaucht sind) kann man NoSQL Datenbanken auch anhand Ihres Typs bzw. Ihres Arbeitsprinzips kategorisieren: Key-Value, Key-Dokument, Spalten-Familie oder Graph.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.