Datenbanken sind eine Schlüsselkomponente der meisten Anwendungen und Websites. Sie speichern wichtige Daten wie Inhalte und Nutzerdaten und können Ereignisse innerhalb einer Anwendung aufzeichnen. Es gibt viele verschiedene Datenbanktechnologien, und die von dir gewählte Technologie kann sich auf alles auswirken, von der Anwendungsarchitektur bis zu den Entwicklungsprozessen.

Wir nehmen hier DynamoDB und MongoDB unter die Lupe, zwei beliebte Angebote, die keine traditionellen relationalen Datenbanken sind. Du kannst selbst entscheiden, ob dieser „NoSQL“-Ansatz das Richtige für deine Anwendung ist und welche dieser beiden Datenbankplattformen die Aufgabe am besten erfüllt.

Die Technologie verstehen: DynamoDB vs. MongoDB

In den letzten zehn Jahren sind NoSQL-Datenbanken immer beliebter geworden, um der Nachfrage nach flexibleren und skalierbaren Technologien gerecht zu werden. Das Wachstum von sozialen Netzwerken und nutzergenerierten Inhalten hat diese Nachfrage teilweise angeheizt.

Jahrelang verwendeten die meisten Anwendungen traditionelle SQL-Datenbanken, in denen jede Datenzeile eine bestimmte Entität und ihre Beziehungen zu anderen Entitäten beschreibt. Bei der Beantwortung einer Abfrage fügt eine relationale Datenbank die Daten aus verschiedenen Zeilen zusammen und gibt sie an eine Client-Anwendung zurück. Diese Architektur ist optimiert, um den Speicherplatzbedarf zu reduzieren und doppelte, sich wiederholende Daten zu vermeiden, da jedes Element einer Ergebnismenge normalerweise nur einmal in der Datenbank gespeichert wird.

Im Gegensatz dazu speichern NoSQL-Datenbanken in der Regel die Basisentität und die zugehörigen Daten in einem einzigen Dokument. Das bedeutet, dass einige Daten mehrfach gespeichert werden, was den Speicherbedarf erhöht. Aber da die Speicherkosten gesunken sind, hat die Skalierbarkeit von NoSQL-Lösungen für viele Anwendungsfälle Vorrang. Aufgrund ihrer zugrunde liegenden Architektur eignen sich NoSQL-Datenbanken hervorragend für den Betrieb in Clustern, bei denen die Daten über mehrere Knoten verteilt sind.

Was ist DynamoDB?

DynamoDB ist eine serverlose NoSQL-Datenbank, die von Amazon entwickelt wurde, um sein berühmtes Online-Shopping-Angebot zu unterstützen, und die 2012 auf seiner Cloud-Hosting-Plattform Amazon Web Services (AWS) für Entwickler zur Verfügung gestellt wurde. Wie bei Amazons Shop beantwortet DynamoDB Abfragen ohne den Rechenaufwand, der für die manchmal komplizierten Joins einer relationalen Datenbank erforderlich ist.

DynamoDB ist ein skalierbarer Key-Value-Speicher, in dem alle Daten, die mit einem bestimmten Schlüssel verbunden sind, mit diesem gespeichert werden. Es ist keine Verknüpfung erforderlich! Nachdem diese Anforderung weggefallen ist, haben die Ingenieure DynamoDB so optimiert, dass die Daten schnell zurückgegeben werden.

Amazon stellt DynamoDB über AWS als vollständig verwalteten Service zur Verfügung. Deshalb ist er bei Entwicklern so beliebt, denn sie können DynamoDB mit minimalem Datenbank-Overhead nutzen. Außerdem lässt sich der Service leicht skalieren, wenn die Anwendungen immer mehr Nutzer haben. Und wenn ein Unternehmen andere AWS-Tools nutzt, kann DynamoDB nahtlos in diese integriert werden.

DynamoDB vs MongoDB: Das DynamoDB-Logo
Das DynamoDB-Logo

Wie funktioniert DynamoDB?

DynamoDB ist ein NoSQL-Schlüsselwertspeicher. Da es sich um einen verwalteten Dienst handelt, sind die zugrunde liegende Architektur und Infrastruktur für den Entwickler nicht einsehbar.

Unter der Haube werden die Daten anhand des Primärschlüssels partitioniert, wobei jede Partition drei Knoten enthält, die eine Kopie der Daten speichern. Diese Partitionierung ermöglicht eine einfache Skalierung, da die Daten über mehrere Server verteilt sind. Außerdem sorgt die Datenreplikation für Redundanz, wenn ein bestimmter Knoten ausfällt.

Einer der drei Knoten wird als Leader Node bezeichnet, auf dem alle Schreibvorgänge zuerst ausgeführt werden, bevor sie auf die anderen beiden Knoten repliziert werden. Indem zuerst auf den Leader Node geschrieben wird, kann DynamoDB konsistente Schreibvorgänge gewährleisten. Um eine optimale Lesekonsistenz zu gewährleisten, müssen alle DynamoDB-Lesevorgänge ebenfalls über den Leader Node laufen.

Da dieser Ansatz bei leseintensiven Anwendungen mit Leistungseinbußen verbunden ist, bietet DynamoDB den Nutzern die Möglichkeit, sich für „eventuelle“ Konsistenz zu entscheiden. Dadurch können die Lesevorgänge auf alle Knoten verteilt werden. Diese Option kann jedoch zu Lasten der Genauigkeit verlaufen, wenn die Daten vor einem Lesevorgang noch nicht an alle Knoten weitergegeben wurden.

Vor- und Nachteile von DynamoDB

Die wichtigsten Vorteile von DynamoDB sind, dass es serverlos, skalierbar und schnell ist. Du kannst es in wenigen Minuten mit minimalem Infrastruktur-Overhead konfigurieren. AWS kümmert sich um die Sicherheit, die Upgrades, die Serververwaltung und die Gewährleistung der Hochverfügbarkeit. Außerdem kann DynamoDB unendlich skaliert werden (nur begrenzt durch die physische Größe von AWS), und das bei einem Pay-for-Use-Modell. Und schließlich bietet DynamoDB schnelle Lese- und Schreibvorgänge mit Skalierungsfähigkeiten, die eine anhaltend schnelle Leistung gewährleisten, wenn der Datenspeicher wächst.

Ein Nachteil sind die minimalen Abfrageoptionen. Schlüsselabfragen sind hilfreich, aber wenn du komplexere Abfragen – wie z. B. Aggregationen – benötigst, musst du die Daten zur Analyse in eine externe Datenbank exportieren. Außerdem ist DynamoDB nur über AWS verfügbar. Wenn du bereits in das AWS-Ökosystem integriert bist, wird das kein Problem sein. Wenn dein Unternehmen die Lösung vor Ort einsetzen will, muss es sich anderweitig umsehen.

Was ist MongoDB?

MongoDB ist ein NoSQL-Dokumentenspeicher, der 2009 als Open-Source-Datenbank mit der Option auf kommerzielle Supportpakete veröffentlicht wurde. Sie speichert JSON-Dokumente als binäre JSON-Objekte (BSON), die komplexe Datenstrukturen wie verschachtelte Eigenschaften und Arrays speichern können.

MongoDB läuft auf Windows-, macOS- und Linux-Plattformen und unterstützt viele Programmiersprachen. Du findest MongoDB auch auf den gängigen Cloud-Plattformen von Amazon, Google und Microsoft.

MongoDB ist vor allem wegen seiner Flexibilität beliebt. Es bietet alle Vorteile einer NoSQL-Datenbank und erfüllt gleichzeitig komplexere Anforderungen wie ACID-Transaktionen für Datenintegrität, Aggregationsabfragen und das Zusammenführen von Datensätzen. Und dank der nativen JavaScript-Unterstützung ist es eine immer beliebtere Backend-Datenbank für Websites, die diese beliebte Programmiersprache verwenden.

DynamoDB vs MongoDB: Das MongoDB-Logo
Das MongoDB-Logo

Wie funktioniert MongoDB?

MongoDB speichert BSON-Objekte, die ein oder mehrere Schlüssel-Werte-Paare enthalten. Bei den Werten kann es sich um einfache Datentypen wie Strings und Zeitstempel oder um komplexe Typen wie verschachtelte Objekte und Arrays handeln.

MongoDB speichert Dokumente in Sammlungen, ähnlich wie Zeilen in einer Tabelle. Es ist üblich, dass Dokumente in einer Sammlung ein ähnliches Schema haben, aber selbst Dokumente mit denselben Schlüsseln können unterschiedliche Schemata haben – Schlüssel mit demselben Namen müssen nicht denselben Datentyp speichern. MongoDB kann die Validierung von Eigenschaften erzwingen, wenn Datensätze eingefügt oder aktualisiert werden, und es gibt die Anforderung, dass die Daten in bestimmten Schlüsseln einen bestimmten Typ haben müssen.

MongoDB bietet auch Sharding, das der Partitionierung in DynamoDB ähnelt. Beim Sharding werden die Daten auf der Grundlage eines Shard-Schlüssels auf mehrere Server verteilt. Durch die Verteilung der Daten können Lese- und Schreibvorgänge auf mehrere Server verteilt werden, so dass ein einzelner Server nicht überlastet wird.

Vor- und Nachteile von MongoDB

Zusätzlich zu den typischen Vorteilen von NoSQL unterstützt MongoDB mehrere Plattformen – wichtig für Unternehmen, die bei der Wahl ihres Cloud-Anbieters flexibel sein oder eine Datenbank vor Ort hosten wollen.

MongoDB unterstützt außerdem komplexe Abfragen und Aggregationen durch seine Aggregationspipeline. Das macht sie im Vergleich zu anderen NoSQL-Datenbanken besonders flexibel, da sie analytische Abfragen, Dokumentensuchen und das Zusammenführen von Daten unterstützt. Allerdings kann die Leistung bei großen Datenmengen abnehmen. Darüber hinaus bietet MongoDB Atlas eine serverlose Option für Unternehmen, die die Last des Infrastrukturmanagements loswerden wollen.

Einer der Nachteile von MongoDB ist, dass die Datenmenge recht groß sein kann, da in den Dokumenten sowohl die Daten als auch die Schlüssel gespeichert werden müssen. Und obwohl die Aggregationspipelines von MongoDB leistungsstarke Tools sind, sind sie aufgrund der Verwendung einer speziellen Syntax äußerst komplex zu schreiben und zu erstellen.

Schließlich gibt es einen Infrastruktur-Overhead für diejenigen, die MongoDB Atlas nicht nutzen, insbesondere für Produktionssysteme, die Replikation und Sharding nutzen, um die Leistungsfähigkeit des Systems zu gewährleisten. Dazu gehören die Überwachung, die Verwaltung von Datenschiefständen, die Durchführung von Upgrades und die Verwaltung der Sicherheit.

Unterm Strich: DynamoDB vs. MongoDB

Obwohl DynamoDB und MongoDB beides NoSQL-Datenbanken sind, unterscheiden sie sich erheblich. Dein Anwendungsfall wird entscheidend dafür sein, welche Datenbank du verwenden solltest.

Erstens hat DynamoDB weniger Datentypoptionen auf Schemaebene. Sie unterstützt zum Beispiel keine Datumsangaben, was bedeutet, dass Entwickler/innen in ihren Anwendungen eine Logik zum Parsen und Verarbeiten dieser Daten vorhalten müssen. MongoDB unterstützt viel mehr Datentypen, einschließlich Datumsangaben.

Zweitens ermöglicht DynamoDB Abfragen über Key-Value-Lookups und Tabellenscans. Die Leistung bei Tabellenscans ist jedoch mangelhaft. Für komplexere oder Ad-hoc-Abfragen ist es am besten, in eine andere Datenbank zu exportieren. Im Gegensatz dazu unterstützt MongoDB Key Lookups zusätzlich zu analytischen Abfragen und Data Joining. Es bietet eine flexiblere Indexunterstützung, da du jedem Feld sekundäre Indizes hinzufügen kannst. DynamoDB unterstützt zwar sekundäre Indizes, ist aber in ihrer konzeptionellen Komplexität und der Anzahl, die du erstellen kannst, begrenzt.

Was die Sicherheit angeht, profitiert DynamoDB von der AWS-Plattform. Die Authentifizierung mit DynamoDB erfolgt über die AWS-Zugriffskontrolle. Das macht die Sicherung einer DynamoDB-Datenbank ziemlich einfach.

Bei MongoDB bist du für alle Sicherheitsauflagen verantwortlich, einschließlich der Erstellung von Benutzerkonten und der Verwaltung des Netzwerkzugriffs. Das bedeutet einen viel höheren Aufwand. Mit MongoDB Atlas wird MongoDB jedoch zu einer verwalteten Lösung, die diese Herausforderungen beseitigt.

Als verwaltete Lösung verfügt DynamoDB über integrierte Sicherungs- und Wiederherstellungsfunktionen, einschließlich der Möglichkeit, Replikate für mehrere Regionen zu erstellen und eine einfache Wiederherstellung von Backups durchzuführen. Standardmäßig verwaltet MongoDB diese Prozesse nicht und muss manuell konfiguriert werden. MongoDB Atlas vereinfacht den Prozess etwas, erfordert aber eine zusätzliche Konfiguration.

Auf einen Blick: DynamoDB vs. MongoDB

Funktion DynamoDB MongoDB
Datentypen Die meisten Standard-Datentypen außer Datumsangaben Alle Datentypen der BSON-Spezifikation einschließlich Datumsangaben
Abfragen Schlüsselabfragen mit begrenzter Abfrage mehrerer Dokumente Key Lookups, Abfragen, Joins und Aggregationen
Sicherheit Eingebaut in AWS mit geringem Overhead Selbstverwaltet, außer bei Verwendung von MongoDB Atlas
Skalierbarkeit Eingebaut in AWS mit geringem Overhead Selbstverwaltet, außer bei Verwendung von MongoDB Atlas
Sicherung und Wiederherstellung Eingebaut in AWS mit geringem Overhead Selbstverwaltet, außer bei Verwendung von MongoDB Atlas

Insgesamt ist MongoDB die flexiblere Option – sie kann überall eingesetzt werden und bietet ein umfangreicheres Set an Tools zum Speichern und Abfragen von Daten. Wenn du jedoch eine schlanke Datenbank mit enger AWS-Integration und geringem Infrastruktur- und Sicherheitsaufwand brauchst, ist DynamoDB die richtige Wahl.

Zusammenfassung

MongoDB und DynamoDB sind hochleistungsfähige NoSQL-Angebote, die sich aufgrund ihrer relativen Stärken für sehr unterschiedliche Zwecke eignen. Für eine schlanke und einfache Lösung ist DynamoDB eine gute Wahl. Wenn du jedoch komplexere Schemata, Aggregationsabfragen und eine bessere Indexunterstützung benötigst, ist MongoDB die bessere Wahl.

Denk daran, dass der Preis für die Flexibilität ein erhöhter Infrastrukturaufwand ist. Aber wenn du die Flexibilität von MongoDB brauchst und den Overhead reduzieren willst, ist MongoDB Atlas oft ein günstiger Kompromiss.

Natürlich brauchst du neben deiner Datenbank auch eine überzeugende Anwendung. Du kannst deine Anwendung auf der Kinsta Anwendungs-Hosting-Plattform entwickeln und mit unserem Hobby-Tier sogar kostenlos starten und aufstocken, wenn die Nutzerinnen und Nutzer auf dein Meisterwerk aufmerksam werden.

Steve Bonisteel Kinsta

Steve Bonisteel is Technical Editor bij Kinsta. Hij begon zijn schrijverscarrière als verslaggever en achtervolgde ambulances en brandweerwagens. Sinds eind jaren negentig schrijft hij over internetgerelateerde technologie.