carloscastilla - Fotolia

Vergleich von NoSQL-Datenbanken: MongoDB versus Cassandra

MongoDB und Cassandra sind beides Open Source NoSQL-Datenbanken. Doch damit enden die Gemeinsamkeiten. Ein Vergleich fördert interessante Details zutage.

MongoDB und Cassandra gehören beide zur NoSQL-Datenbankfamilie. Und beide sind Open Source. Die Ähnlichkeiten enden an dieser Stelle aber auch schon.

Bevor wir uns damit beschäftigen, wie MongoDB und Apache Cassandra sich unterscheiden, fassen wir die Gemeinsamkeiten der beiden Systeme kurz zusammen.

MongoDB und Cassandra sind beides Datenbanksysteme. Beide gehören zur Familie der NoSQL-Datenbanken. NoSQL (Not only SQL) ist eine Datenbankarchitektur, in der Daten relativ unstrukturiert gespeichert werden können. Die Daten benötigen keine festgelegten, starren Tabellenschemata, wie dies bei herkömmlichen relationalen Datenbanken im SQL-Stil erforderlich ist.

Im Vergleich zu relationalen Datenbanken ist NoSQL die effizientere Methode zur Speicherung großer Mengen unstrukturierter Daten. Solche Datenbanken werden deshalb vorzugsweise im Big-Data-Umfeld eingesetzt. Beide Systeme sind deshalb für Unternehmen, die mit großen Datenmengen agieren müssen, interessant.

Eine zweite Gemeinsamkeit ist die Open-Source-Basis. Obwohl auch kommerzielle Implementierungen verfügbar sind, gehören MongoDB und Cassandra grundsätzlich in die Kategorie Open-Source-Software. Hier fangen die ersten Unterschiede allerdings schon an: MongoDB unterliegt der GNU Affero General Public License 3.0, während Cassandra der Apache License 2.0 unterliegt.

Aber es gibt noch ein paar Gemeinsamkeiten: Beide Datenbanken gibt es erst seit etwa einem Jahrzehnt. Cassandra debütierte 2008 und MongoDB 2009. Im Vergleich zu Datenbanken wie MySQL, die Mitte der 90er Jahre entstanden sind, sind beide also relativ neu. Und schließlich unterstützen beide Datenbanken auch die drei wichtigsten, großen Betriebssysteme: Windows, Linux und macOS. Cassandra läuft allerdings zusätzlich auch noch auf Berkeley Software Distribution-based (BSD) Betriebssystemen.

MongoDB vesus Cassandra: Wesentliche Unterschiede

In den meisten anderen wichtigen Punkten sind MongoDB und Cassandra unterschiedlich.

Hochverfügbarkeitsstrategie

Die Strategien für die Datenverfügbarkeit sind vielleicht die wichtigsten Faktoren, in denen sich MongoDB und Cassandra unterscheiden.

In einer Cassandra-Bereitstellung kann man mehrere Master-Knoten einrichten. Wenn ein oder mehrere Master-Knoten ausfallen, bleibt die Datenbank verfügbar, so lange noch mindestens ein Master funktioniert. Dieses hochverteilte und redundante Modell macht es einfach, High Availability (HA) in Cassandra zu erreichen – vorausgesetzt natürlich, man hat die notwendige Infrastruktur, um mehrere Master-Knoten einzurichten.

MongoDB ignoriert das Thema High Availability nicht. Allerdings basiert seine HA-Strategie auf dem Konzept des automatischen Failover. In einem MongoDB-Cluster lässt sich nur ein Master-Knoten einrichten. Fällt der Master aus, wird ein Slave-Knoten automatisch zum neuen Master umgewandelt. Das sichert die Kontinuität der Datenbank, aber der Prozess findet nicht sofort statt. Es dauert in der Regel etwa eine Minute.

Ob eine Minute Unterbrechung der Datenspeicherung akzeptabel ist oder nicht, hängt davon ab, was man machen möchten. Aber egal, wie man es betrachtet: Cassandra ist zweifellos widerstandsfähiger und hochverfügbarer als MongoDB.

Schreibgeschwindigkeit

Die Beschränkung von MongoDB auf einen einzigen Master-Knoten hat auch wichtige Auswirkungen auf die Geschwindigkeit, mit der Daten in eine Datenbank geschrieben werden können. Weil ein MongoDB-Cluster nur einen Master hat, ist die Speicherung neuer Informationen in die Datenbank durch die Kapazität dieses einzelnen Master-Knotens strikt begrenzt.

Bei Cassandra hingegen akzeptiert jeder Master-Knoten mehrere Schreibvorgänge parallel. Je mehr Master-Knoten man also hat, desto mehr Daten lassen sich auf einmal schreiben. Wenn man also viele Daten schreiben muss, sollten die Präferenz eher in Richtung Cassandra gehen.

Datenstrukturen

Obwohl beide Datenbanken zur NoSQL-Familie gehören, ist NoSQL nicht gleich NoSQL. Im Detail können NoSQL-Datenbankarchitekturen sehr unterschiedlich sein – und das gilt auch für MongoDB und Cassandra.

Im Vergleich zu Cassandra hat MongoDB eine unstrukturiertere Architektur. Mit MongoDB lassen sich Objekte definieren, die grundsätzlich beliebige Eigenschaften haben können. Darüber hinaus lassen sich Objekte innerhalb einer Hierarchie beliebig organisieren.

Im Gegensatz dazu bietet Cassandra ein tabellenartiges Speichermodell. Dieses ähnelt eher traditionellen SQL-Datenbanken – wobei Cassandra nicht so starr ist wie eine herkömmliche SQL-Datenbank.

Abfragesprache

Cassandra ähnelt nicht nur aus Sicht der Datenstruktur SQL-Datenbanken. Die Ähnlichkeit gilt auch für die Abfragesprache. Cassandras Abfragesprache CQL gleicht stark den Abfragesprachen, wie sie in traditionellen Datenbanken üblich sind.

Wenn man eine Datenbank möchte, die MySQL und SQL-Datenbanken gleicht, aber mehr Flexibilität als diese bietet, ist Cassandra eine gute Wahl. Wenn man ein höheres Maß an Flexibilität benötigt und bereit ist, neue Tricks zu lernen, sollte MongoDB die erste Wahl sein.

CQL und SQL sind nicht identisch, aber im Allgemeinen funktionieren Abfragen, die mit SQL funktionieren, auch mit CQL. Dies ist nützlich, wenn Datenanalysten und Datenbankanwender SQL bereits beherrschen. MongoDB hat sein eigenes Query-Interface. Es handelt sich dabei um ein JSON-Format, was sich leicht erlernen lässt.

Anwendungsfälle

Wann ist MongoDB also die bessere Lösung als Cassandra oder umgekehrt?

Generell eignet sich MongoDB am besten für Anwendungen mit vielen hochgradig unstrukturierten Daten. Wenn man den Umfang und die Art der Daten, mit denen man arbeiten wird, nicht kennt oder nur minimal vorhersehen kann, werden die flexiblen Datenstrukturen von MongoDB besser passen als die von Cassandra.

Um MongoDB effektiv nutzen zu können, muss man jedoch in der Lage sein, mit möglichen Ausfällen des Master-Knotens sowie mit seinen begrenzten Schreibgeschwindigkeiten fertig zu werden. Und es sollte auch nicht vergessen werden, dass man eine neue Abfragesprache lernen muss.

Cassandra ist die bessere Wahl bei Anwendungsfällen, die mit Datentypen im SQL-Stil arbeiten. Cassandra funktioniert auch gut, wenn man hohe Schreibgeschwindigkeiten benötigt. Auch wenn der Lernaufwand für eine neue Abfragesprache Nutzer einschüchtert, profitieren diese von der Ähnlichkeit zwischen CQL und SQL.

Kurz gesagt: Wenn man eine Datenbank möchte, die MySQL und SQL-Datenbanken gleicht, aber mehr Flexibilität als diese bietet, ist Cassandra eine gute Wahl. Wenn man ein höheres Maß an Flexibilität benötigt und bereit ist, neue Tricks zu lernen, sollte MongoDB die erste Wahl sein.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Was NoSQL-Datenbanken im Big-Data-Zeitalter leisten.

NoSQL-Datenbanken sind eine digitale Schlüsseltechnologie

Kostenloses E-Handbook: Datenbank-Performance optimieren.

Erfahren Sie mehr über Datenbanken