NoSQL NoSQL-Datenbanken im Vergleich

Autor / Redakteur: Michael Matzer / Nico Litzel

NoSQL-Datenbanken sind erdacht, um große, unterschiedliche Mengen von Dimensionen wie Raum, Zeit und Lokation auf möglichst effiziente Weise zu speichern und zu verarbeiten. Mittlerweile sind sie die unabdingbare Alternative zu relationalen SQL-basierten Datenbanken. Doch nicht jede NoSQL-Datenbank eignet sich für jeden Zweck. Tatsächlich sind die meisten sogar recht spezialisiert.

Anbieter zum Thema

Cassandra Enterprise umfasst zahlreiche Leistungsmerkmale, die für Unternehmensnutzer wichtig sind.
Cassandra Enterprise umfasst zahlreiche Leistungsmerkmale, die für Unternehmensnutzer wichtig sind.
(Bild: Datastax)

„NoSQL“ steht mittlerweile für „not-only SQL“, wobei SQL (Structured Query Language) den verbreiteten Standard bildet, der vor allem in relationalen Datenbanken wie Oracle oder in „Hadoop“ und „Spark“ verwendet wird. Damit betrifft SQL nicht die Art der Datenablage – in einer Tabelle oder einem verteilten Filesystem – sondern vielmehr die Abfrage und Auswertung dieses Datenspeichers mithilfe einer Abfragesprache.

NoSQL bedeutet, dass nicht nur SQL unterstützt wird, sondern - nach Jahren der Weiterentwicklung von NoSQL-Datenbanken - auch andere Abfragemethoden wie N1QL, JSON oder Skriptsprachen.

Typen der Datenablage und Abfrage

Zunächst ist es von Vorteil, die verschiedenen Typen der Dateiablage in NoSQL-Datenbanken zu kennen. Sofort wird klar, wie stark sich die Produkte in ihrer Basistechnologie unterscheiden.

  • Graph-Datenbanken: Sie bildet Beziehungen der Daten untereinander ab, etwa zwischen Followern bei Twitter; Stärke: Beziehungen und Netzwerke. Als Beispiele können „Neo4j“ (siehe unten) und „SAP Hybris“ dienen.
  • Dokumenten-Datenbanken: Die zu speichernden Objekte werden als Dokumente mit möglicherweise verschiedenen Attributen gespeichert. Das ist sinnvoll bei Blogs und Content-Management-Systemen oder Wikis. Für Web-Dokumente wird heute meist JSON verwendet. Die Attribute oder „tags“ lassen sich leicht in eine Tag-Cloud übersetzen. Handelt es sich bei den Dateien um getaggte Bilder, lässt sich darauf mithilfe von Deep Learning eine entsprechende Mustererkennung anwenden.
  • Key-Value-Datenbanken: Dieser Datenbank-Typ speichert Daten in Form von Schlüssel-Wertepaaren, wobei der Schlüssel als Index fungiert, mit dem die Datenbank durchsucht wird. Dieser Typ ist recht verbreitet und durch die bewährte Indextechnik auch jedem Datenbank-Administrator und -Programmierer vertraut.
  • Multi-Value-Datenbanken: Neben Feldern gibt es auch Wiederholfelder. In einem Datensatz können etwa mehrere E-Mail-Adressen als Wiederholfelder angelegt sein oder die Historie früherer Adressen als gruppierte Wiederholfelder, bestehend aus Straße, Hausnrummer, PLZ und Stadt, hinterlegt werden.
  • Multi-Modell-Datenbank: vereint alle genannten Datenbanktypen inklusive spalten-orientierter Datenbanken wie „SAP HANA“ oder „Oracle Ten Times“.

Neben den verbreiteten relationalen Datenbanken gibt es noch Objekt-Datenbanken wie „Versant“ oder „Gemstone“, aber sie spielen wegen des Erfolgs der NoSQL-Datenbanken kaum noch eine Rolle.

Die Beraterfirma Altoros hat die drei NoSQL-Datenbanken „Cassandra“ (Datastax Enterprise 5.0), „Couchbase Server 5.0“ und „MongoDB v3.4“ miteinander verglichen. Es handelt sich um sehr verbreitete und hochskalierbare Enterprise-Produkte, aber sie spiegeln nicht die ganze Bandbreite des NoSQL-Spektrums wider.

Cassandra

Cassandra ist ein partitionierter, zeilenorientierter Datenspeicher, in dem die Zeilen in Tabellen organisiert sind. Anfangs wurde Cassandra bei Facebook von den Amazon-Dynamo-Entwicklern mit dem Ziel entworfen, hohe Verfügbarkeit und lineare Skalierbarkeit zu liefern.

Es weist einstellbare Datenkonsistenz und aktive Anti-Entropie-Technologie auf. Schließlich entwickelte sich Cassandra zu einem Apache-Projekt und zum kommerziellen Produkt der Firma Datastax: Cassandra Enterprise. Zusätzlich zur Open-Source-Version stellt die Enterprise-Version noch Volltextsuche, Echtzeit-Analytik, erweiterte Datensicherheit und Auditierungsfunktionen bereit.

MongoDB

MongoDB 3.6 Compass listet auf der rechten Seite auf, welche Datenbankabfragen zuletzt ausgeführt wurden und zeigt im Hauptfeld ein Beispiel dafür an.
MongoDB 3.6 Compass listet auf der rechten Seite auf, welche Datenbankabfragen zuletzt ausgeführt wurden und zeigt im Hauptfeld ein Beispiel dafür an.
(Bild: MongoDB)

MongoDB ist eine JSON-Dokument-orientierte NoSQL-Datenbank, die im Web skaliert. Deshalb stellt MongoDB seine Dienste auf Google, AWS und Microsoft Azure bereit. Um die JSON-Dokumente zu handhaben, kann der Nutzer mehrere Tools nutzen; für die Abfrage kann er sich einer Reihe von Sekundärindizes und einer REST-API-basierten Abfragesprache bedienen.

Wenn es um Datenreplikation und Partitionierung geht, bietet die Datenbank laut Altoros entsprechend unabhängig ablaufende Prozesse an. Um die Governance und Datenqualität zu gewährleisten, unterstützt die Version 3.6 nun JSON-basierte Datenbankschemata, um so die Gültigkeit neuer Daten zu prüfen. Kürzlich wurden mehrere neue Services und Leistungsmerkmale bereitgestellt. MongoDB Atlas ist ein Monitoring- und Backup-Dienst für Datenbanken, MongoDB Stitch ein Backend-as-a-Service, das Routine-Aufgaben wie Authentisierung oder Payment-Abwicklung abnimmt.

MongoDB erfreut sich erheblicher Verbreitung und Beliebtheit. Rund 30.000 Downloads pro Tag sprechen für sich. Zu den Kunden gehören Bosch und Amadeus, das Flugreservierungen und -tickets verwaltet. „Der Datenbankhersteller hat weltweit über 3.000 Unternehmenskunden“, berichtet Roman Gruhn, Director of Information Strategy bei MongoDB.

Couchbase Server

Das Couchbase Dashboard sieht in v5.0 sehr übersichtlich aus.
Das Couchbase Dashboard sieht in v5.0 sehr übersichtlich aus.
(Bild: Couchbase)

Der Couchbase Server, der mittlerweile in der Cluster-basierten Version 5.0 vorliegt, ist eine gemischte NoSQL-Datenbank. Sie unterstützt sowohl JSON-Dokumente als auch eine verteilte Key-Value-Datenbank. Die JSON-Dokumente lassen sich mit einer REST-API-basierten Abfrage auswerten, allerdings wird dabei das Objekt-relationale Mapping (ORM) vermieden, damit die Leistung hoch bleibt.

Um eine hohe Performance zu sichern, operiert Couchbase mit einem Cache auf Objektebene, mit asynchroner Replikation und Datenpersistenz. Auch die Skalierbarkeit steht im Vordergrund, so dass sowohl Scale-out-Verfahren als auch Scale-up-Verfahren realisierbar sind, um Workloads, die hohe Leistungen an Computing, RAM-Nutzung und Storage-Nutzung erfordern, unabhängig voneinander zu unterstützen.

Die Query Workbench in Couchbase 5.0 stellt verschiedene Tools für die Optimierung von Abfragen bereit.
Die Query Workbench in Couchbase 5.0 stellt verschiedene Tools für die Optimierung von Abfragen bereit.
(Bild: Couchbase)

Um JSON-Abfragen zu realisieren, stellt Couchbase 5.0 zusätzlich den auf dem SQL92-Standard entstehenden N1QL-Standard bereit. Er bietet geschäftlichen Applikationen die Möglichkeit, strukturierte Abfragen wie mit SQL zu nutzen, soll aber so leicht zu verwenden sein wie eine Web-Suchmaschine. Das öffnet den Weg zum Einsatz eines BI-Connectors von Tableau, es erlaubt, Big Data mithilfe von „Apache Kafka“ und „Apache Spark“ anzufragen, wobei sich Machine Learning nutzen lässt.

Die Abfragesprache stellt eine eigene Syntax bereit. Im Bild: ein Abfrageablauf in Couchbase 5.0
Die Abfragesprache stellt eine eigene Syntax bereit. Im Bild: ein Abfrageablauf in Couchbase 5.0
(Bild: Couchbase)

Couchbase 5.0 [PDF] verfügt nun über eine API für das Streaming in Echtzeit und unterstützt „OpenShift“ sowie Container, mit denen es sich auf Ubuntu und RHEL installieren lässt. Auch AWS, Google Cloud Platform und Azure lassen sich für die Bereitstellung nutzen. Der Fokus liegt auf der Performance; moderne Konnektivität stützt den Couchbase-Anspruch, eine Datenbank für die Interaktion mit Kunden (Engagement) zu sein.

Neo4j

Neo4j 3.3 ist eine umfassende Datenbankplattform für Unternehmen. Sie kann KI, Big Data und Algorithmen für Anwendungen und Analytik nutzen.
Neo4j 3.3 ist eine umfassende Datenbankplattform für Unternehmen. Sie kann KI, Big Data und Algorithmen für Anwendungen und Analytik nutzen.
(Bild: Neo4j)

Neo4j ist eine reine Graphdatenbank, die nicht erst seit ihrer Erweiterung im Oktober 2017 zu einer Graph-Plattform eine technologische Vorreiterrolle in ihrem Segment einnimmt (neben zwei Millionen Downloads bis 2015). Wie eingangs erwähnt, bilden Graphen, etwa bei Facebook, eine finite Anzahl von Beziehungen ab.

In Neo4j wird alles entweder als Kante, als Knoten oder als Attribut gespeichert. Jeder Knoten hat eine beliebige Anzahl von Attributen. Knoten und Kanten können eine Beschriftung (Label) tragen. Beschriftungen können verwendet werden, um die Treffermenge bei Suchen einzuschränken.

Neo4j gibt es als Enterprise- und als Community-Edition. Nicht jede Version hat alle Features des Neo4j-Desktops.
Neo4j gibt es als Enterprise- und als Community-Edition. Nicht jede Version hat alle Features des Neo4j-Desktops.
(Bild: Neo4j)

Mit der Einführung von Schemata wurde auch das Indexing in der Abfragesprache „Cypher“ eingeführt. Bisher war Indexing nur getrennt von Cypher verfügbar. Cypher ist die deklarative Abfragesprache in Neo4j, mit der sich laut Hersteller selbst komplexe Abfragen realisieren lassen sollen.

Mit der Abfragesprache Cypher lassen sich in Neo4j Apache Spark Ressourcen erforschen und zusammenführen.
Mit der Abfragesprache Cypher lassen sich in Neo4j Apache Spark Ressourcen erforschen und zusammenführen.
(Bild: Neo4j)

Die Daten können beispielsweise soziale Beziehungen, Verbindungen im öffentlichen Nahverkehr, Straßenkarten oder Topologien in Netzwerken sein. Die Anwendungen reichen von künstlicher Intelligenz über Betrugserkennung und Echtzeit-Empfehlungen bis zu Stammdaten-Management. Die Datenbank weist mehr zehn Millionen Downloads auf und zählt 250 kommerzielle Unternehmen zu ihren Kunden, darunter so große wie eBay und Walmart.

Die Schreibleistung der Neo4j-Datenbank wächst mit jeder neuen Version.
Die Schreibleistung der Neo4j-Datenbank wächst mit jeder neuen Version.
(Bild: Neo4j)

Die Neo4j-Graph-Plattform in der Version 3.3 unterstützt Unternehmen dabei, vernetzte Daten in vollem Umfang zu nutzen und die komplexen Verknüpfungen zwischen Personen, Prozessen und Systemen zu entschlüsseln. „Wir wurden auf Graphdatenbanken aufmerksam, weil wir unsere Daten besser verstehen und mehr Nutzen aus ihnen ziehen wollten. Bei Graphdatenbanken stehen die Beziehungen zwischen den Datenpunkten an allererster Stelle“, so Mark Hashimoto, ‎Director of Engineering bei Comcast.

Mit den ETL-Werkzeugen lassen sich in Neo4j der Datentransport und die Abfragen erheblich beschleunigen. Zukünftig soll die Quellenbasis erheblich deutlich ausgeweitet werden, so etwa auf Hive.
Mit den ETL-Werkzeugen lassen sich in Neo4j der Datentransport und die Abfragen erheblich beschleunigen. Zukünftig soll die Quellenbasis erheblich deutlich ausgeweitet werden, so etwa auf Hive.
(Bild: Neo4j)

Die Version 3.3 bietet eine gesteigerte Performance gegenüber v3.2. Dazu tragen erweiterte native Indexe, die Überarbeitung des Cypher Query Interpreters sowie höhere Leistung bei Schreib- und Aktualisierungsvorgängen bei. Neu ist die ETL-Erweiterung (ETL = Extract, Transform, Load). IT-Architekten sollen von der schnellen Datenaufbereitung und dem Import in die Graph-Plattform mit Neo4j ETL profitieren. Die Verbindungen werden nicht nur offengelegt, sondern können auch für eine Reihe von relationalen Quellen und den Rohdatenformaten in Hadoop oder anderen Systemen (wie etwa Spark, siehe Bild) abgebildet werden.

Data Scientists können die Graph-Algorithmen von Neo4j zur Entwicklung ihrer KI-Logik für Projekte nutzen und gleichzeitig mit Cypher for Apache Spark größere Datenmengen in Form von Graphen traversieren. Geschäftskunden können ihre Graphdaten über eine Vielzahl branchenführender Partner (Tableau, Qlik usw.) visualisieren, verstehen, analysieren und untersuchen. Neo4j Desktop ist eine neue Konsole für Entwickler und Benutzer, die die Erforschung und Entwicklung mit einer lokalen, registrierten Version der Neo4j Enterprise Edition und weiterer Plattformkomponenten wie APOC und Algorithmenbibliotheken umfasst.

Empfehlungen

Die Altoros-Experten empfehlen die Verwendung von Couchbase Server oder MongoDB, um semistrukturierte Daten zu speichern und zu verarbeiten, welche vom JSON-Format profitieren können. Da es eine Mobilversion von Couchbase Server gibt, bietet er sich für Mobile-/Offline-Anwendungen an. Cassandra funktioniert hingegen gut für schreibintensive Workloads, wenn auf einem Big Data Level strukturierte Daten und nicht-relationale Daten zu verarbeiten sind.

Couchbase Server

Der Couchbase Server konzentriert sich stärker auf vertikale Skalierbarkeit als seine Rivalen in diesem Vergleich. Sein Leistungsmerkmal der multidimensionalen Skalierbarkeit (sowohl scale-out als auch scale-up) zielt auf entsprechende Kundenszenarien ab, die unterschiedliche Workload-Typen skalieren müssen (entweder mit Key-Value, Indexing oder Volltextsuche).

Dieses Grundkonzept lässt sich wohl bis zu Hunderten von Cluster-Knoten skalieren, so die Experten. Der neue Standard N1QL – ausgesprochen „Nickel“ – erweitert SQL um Funktionen für die Abfrage von JSON-Dokumenten. Die Funktion XDCR erlaubt das leichte und zuverlässige Design von Multi-Cluster-Installation mit fortgeschrittenen Topologien.

In diesem Vergleich ist Cassandra ist das einzige Datenbanksystem, das Hochverfügbarkeit und Partitionierungstoleranz anbietet. Durch diese Fähigkeiten ist Cassandra in der Lage, Tausende von Cluster-Knoten zu unterstützen. Zudem ist es gut geeignet, beim Schreiben einen hohen Datendurchsatz an Log-orientierten, wenig wechselnden Daten (etwa Logfiles) zu ermöglichen. Die Datenbank stellt eine ausreichende Anzahl von einstellbaren Konsistenzgraden, darunter auch solche, die speziell für Installationen an mehreren Rechenzentren entworfen wurden.

Wegen seiner hierarchischen Architektur bekommt MongoDB im Vergleich weniger Punkte. Es bietet eine bescheidene Anzahl von Cluster-Komponenten, wovon jede ihre eigenen Konfigurationsmerkmale aufweist, zusammen mit Master-Slave-Replikation, die von der Datenpartitionierung entkoppelt ist.

Die Konfigurations-Server nehmen eine außergewöhnlich bedeutende Rolle ein. All diese Aspekte machen das Bereitstellungs-Design der Datenbank sowie deren Wartung kompliziert. Sie haben bis zu Version 3.5 zusätzliche Anforderungen an den Client-Code gestellt, um Probleme hinsichtlich der Belastbarkeit zu vermeiden. In Version 3.6 wurde das Deployment des Client-Codes geändert, ebenso wie viele weitere Merkmale.

Datenkonsistenz und Flexibilität

Verwendet man MongoDB jedoch auf angemessene Weise, ermöglicht die Datenbank einen hohen Grad an Datenkonsistenz und erlaubt es, Strategien der Partitionierung flexibel umzusetzen. Womit MongoDB Punkte holt, ist seine große Beliebtheit beziehungsweise Verbreitung sowie die Verfügbarkeit von Schulungsmaterial. In einem direkten Vergleich zwischen Couchbase und MongoDB zählt Couchbase sieben Hauptkritikpunkte auf, doch nach Version 3.6 müssen diese nicht mehr unbedingt zutreffen.

Über Neo4j lassen sich die Experten von Altoros nicht aus – dieses Produkt wurde nicht getestet. Die Graph-Datenbank, die von Schweden im Silicon Valley entwickelt wurde, unterscheidet sich jedoch beträchtlich von dem getesteten Trio. Analysten wie Noel Yuhanna von Forrester haben Graph-Datenbanken kürzlich evaluiert.

„Die Einsatzszenarien für Graph-Datenbanken dehnen sich aus, um komplexere Anforderungen zu unterstützen“, so Yuhanna in seiner Zusammenfassung. „Der Markt für Graph-Datenbanken legt an Energie zu.“ Er empfiehlt: „Um eine Digitalisierungsstrategie erfolgreich umzusetzen, sollte man in Graph-Datenbanken investieren.“

(ID:45092235)