Was ist der Unterschied zwischen Redis und MongoDB?
Remote Dictionary Server (Redis) und MongoDB sind zwei NoSQL-Datenbanken, die Daten in einem unstrukturierten Format speichern. NoSQL-Datenbanken speichern Daten anders als relationale Datenbanken, die Tabellen, Zeilen und Spalten verwenden. Redis ist eine Open-Source-In-Memory-Datenbank, die Daten als Schlüssel-Wert-Paare speichert. Für eine hohe Leistung speichert es Daten im RAM, bietet jedoch als zusätzliche Funktion dauerhaften Speicher auf der Festplatte. MongoDB ist eine quellverfügbare Dokumentdatenbank, die Daten im serialisierten JSON-Format speichert. Es speichert Daten im externen Speicher, enthält aber in der Unternehmensversion eine In-Memory-Speicher-Engine.
Weitere Informationen zu NoSQL-Datenbanken »
Datenmodell: Redis im Vergleich zu MongoDB
Redis und MongoDB verwenden unterschiedliche Datenmodelle und speichern Daten architektonisch unterschiedlich.
Redis
Redis speichert Daten im RAM, so dass Sie direkt vom Speicher aus auf die Daten zugreifen können. Dies sorgt zwar für Antworten mit geringer Latenz, begrenzt aber auch das Datenvolumen, das Sie speichern können. Redis speichert den Datensatz durch Snapshotting und AOF-Protokollierung (Append-Only File) auf der Festplatte, was die Lebensdauer von Daten gewährleistet.
Redis speichert Daten als Schlüssel-Wert-Paare, wobei jeder Dateneintrag über einen eindeutigen Schlüssel verfügt. Es unterstützt verschiedene Datentypen wie sortierte Datensätze, Hashes, Mengen, Listen und Zeichenfolgen. Schlüssel können eine beliebige Länge von bis zu insgesamt 512 MB haben.
Die folgende Abbildung zeigt das Redis-Datenmodell.
MongoDB
MongoDB folgt einem Dokumentdatenmodell, um Daten primär im externen Speicher zu speichern. Es speichert Daten als serialisierte binäre JSON-Dokumente (BSON). Die maximale Dokumentgröße beträgt 16 MB.
Die Architektur von MongoDB eignet sich für die Skalierung großer Datenmengen, da sie die Leistungsfähigkeit basierend auf dem Speicherplatz erhöhen kann. Unternehmensanwender können auch eine In-Memory-Speicher-Engine für einen hybriden Ansatz verwenden. Sie können die Zwischenspeicherung im Arbeitsspeicher für Daten verwenden, auf die Sie häufig zugreifen, während Sie sich für die Persistenz weiterhin hauptsächlich auf Festplattenspeicher verlassen.
Die folgende Abbildung zeigt das MongoDB-Datenmodell.
Ähnlichkeiten zwischen Redis und MongoDB
Sowohl bei Redis als auch bei MongoDB handelt es sich um NoSQL-Datenbanken, die flexibles Schema-Design, horizontale Skalierbarkeit und hohe Verfügbarkeit bieten. Sie können damit unstrukturierte Daten wie Dokumente und Images flexibler speichern. Anders als relationale Datenbanken können sie dynamische Datenmodelle verwenden, die keine Schemata verwenden.
Zwischen diesen beiden nicht relationalen Datenbanken gibt es verschiedene Ähnlichkeiten.
Sekundäre Indizierung
Sowohl Redis als auch MongoDB bieten sekundäre Indizierung. Mit dieser Funktion können Sie zusätzliche Indizes für Nicht-Primärschlüsselfelder erstellen. Sobald Sie diese zusätzlichen Indizes erstellt haben, können Sie Daten schneller abfragen und abrufen, während Sie nach verschiedenen Kriterien suchen. Durch die sekundäre Indizierung werden die Flexibilität und Abfrageleistung in beiden NoSQL-Datenbanken erhöht.
Replikation
Um eine hohe Verfügbarkeit und Beständigkeit zu gewährleisten, verwenden MongoDB und Redis die Replikation. Sie erstellen Replikatsätze (oder Cluster), in denen die NoSQL-Datenbanken Daten über mehrere Knoten replizieren, um Redundanz zu gewährleisten. Beide Datenbanken verfügen über eine primäre Instance, die Schreibvorgänge akzeptiert, und eine oder mehrere sekundäre Instances, die die Daten der primären Instance replizieren. Wenn die primäre Instance ausfällt, kann eine sekundäre Instance die Arbeit übernehmen.
Leistung
Sowohl Redis als auch MongoDB liefern Antworten mit geringer Latenz und können Workloads mit hohem Durchsatz bewältigen. Redis ist eine In-Memory-Datenbank, das heißt, sie speichert Daten im Arbeitspeicher. Dieses Speichersystem ermöglicht es Redis, Lese- und Schreibvorgänge mit hoher Geschwindigkeit durchzuführen. MongoDB kombiniert Speicherspeicher mit festplattenbasiertem Speicher, was Geschwindigkeit und Datenbeständigkeit bietet.
Hauptunterschiede: Redis im Vergleich zu MongoDB
Redis und MongoDB unterscheiden sich auch hinsichtlich ihrer Funktionen und Fähigkeiten. Hier sind einige weitere wichtige Unterschiede zwischen den beiden.
Skalierung
Durch die horizontale Skalierung kann MongoDB große Datenmengen effizient verarbeiten. Es nutzt Sharding, um Daten über mehrere Regionen und Knoten hinweg zu verteilen. Mit Sharding-übergreifenden Vorgängen können Sie Abfragen und Aktualisierungen über mehrere Shards hinweg durchführen.
Redis bietet nicht das gleiche Maß an Skalierbarkeit wie MongoDB. Redis verwendet standardmäßig nur einen einzigen Shard für primäre Vorgänge. Sie müssen das Sharding manuell auf einer Hash-Basis aufrechterhalten, was die Verwaltung komplizierter macht. Redis verfügt auch nicht über Shard-übergreifende Funktionen.
Verfügbarkeit
Sowohl MongoDB als auch Redis unterstützen Verfügbarkeit durch Replikation. MongoDB unterstützt jedoch ein höheres Maß an Verfügbarkeit durch Verwendung von Replikatsätzen. MongoDB kann bis zu 50 Kopien Ihrer Daten erstellen, verteilt auf mehrere Knoten, Rechenzentren und sogar geografische Regionen. Es unterstützt automatische Failover-Mechanismen. Wenn ein Primärknoten offline geht, wählt er aus den Replikaten einen neuen Primärknoten aus.
Im Gegensatz dazu bietet Redis standardmäßig kein automatisches Failover. Administratorbenutzer initiieren einen manuellen Failover, insbesondere wenn sich das Replikat in einem anderen Rechenzentrum befindet. Wenn Sie ein automatisches Failover wünschen, müssen Sie eine separate Komponente mit der Bezeichnung Redis Sentinel einrichten und konfigurieren.
Integrität
MongoDB unterstützt atomare, konsistente, isolierte und dauerhafte (ACID) Transaktionen mit mehreren Dokumenten. Auf diese Weise können Sie die Daten über mehrere Vorgänge hinweg konsistent halten. Mithilfe von Transaktionen mit mehreren Dokumenten können Sie mehrere Vorgänge als eine Einheit durchführen. Innerhalb einer Sitzung überträgt MongoDB alle Änderungen oder macht sie rückgängig, was zur Sicherstellung der ACID-Compliance beiträgt.
Umgekehrt bietet Redis keine integrierte ACID-Unterstützung. Sie können jedoch den Befehl MULTI verwenden, um mehrere Befehle zu einer einzigen atomaren Operation zusammenzufassen. Doch dies allein ist keine Lösung. Sie müssen auch die Rollback-Funktion in Ihrem Anwendungscode implementieren, da Redis diese nicht nativ in Transaktionen unterstützt.
Abfragesprache
MongoDB bietet ein hohes Maß an Flexibilität bei der Abfrage und führt sogar komplexe räumliche Berechnungen und Datenanalysefunktionen durch. MongoDB verwendet die MongoDB Query Language (MQL), die eine JSON-ähnliche Syntax unterstützt, um erweiterte Abfragen zu vereinfachen. Mit MQL können Sie erweiterte Abfragen über einzelne oder mehrere Schlüssel, Textsuchen und Bereiche hinweg durchführen.
Im Gegensatz dazu ist Redis für schnelle Schlüsselwert-Zugriffsvorgänge als für komplexe Abfrage- und Suchfunktionen optimiert. Sie nutzen Redis hauptsächlich durch die Bereitstellung von Schlüsseln und den Abruf entsprechender Daten. Redis verfügt nicht über eine Abfragesprache wie MQL. Stattdessen bietet es eine Vielzahl von Befehlen zur Interaktion mit Daten. Sie können beispielsweise den Befehl GET verwenden, um Werte abzurufen, indem Sie die entsprechenden Schlüssel bereitstellen.
Wann sollte Redis verwendet werden im Vergleich zu MongoDB
Verwenden Sie für die temporäre Datenspeicherung mit schneller Abfrage Redis. Verwenden Sie für die langfristige dauerhafte Speicherung komplexer Daten mit umfassenden Abfragen MongoDB.
Redis bietet schnellen Zugriff auf häufig aufgerufene Daten und eignet sich daher für Caching und Sitzungsspeicherung. Aufgrund der integrierten Unterstützung für Publish-Subscribe-Messaging-Muster (Pub/Sub) können Sie dies in Echtzeitanwendungen oder ereignisgesteuerten Architekturen verwenden. Außerdem bietet es fortgeschrittene Datenstrukturen wie sortierte Sätze und Listen, die zur Implementierung von Ratenbegrenzungen, Warteschlangen für Aufgaben und Systemen zur Planung von Aufträgen verwendet werden können. Es ist auch effizient beim Zählen und Aggregieren von Daten, wodurch es sich für die Verfolgung von Bestenlistendaten oder anderen Statistiken eignet.
Im Gegensatz dazu können Sie MongoDB zum Speichern komplexer Anwendungsdaten in großem Maßstab verwenden. Es bietet herkömmlichere Datenbankstrukturen und eine Speicherung, die kein Schema verwendet, so dass Entwickler einen flexibleren Ansatz wählen können. Es verarbeitet effizient große Schreib- und Lesevorgänge und kann große Datenmengen verwalten. Sie können es für die Inhaltsverwaltung oder für die Verwaltung von Benutzerprofilen im großen Maßstab verwenden. MongoDB verfügt außerdem über integrierte Geoindizes und unterstützt räumliche Abfragen, wodurch es sich für standortbasierte Anwendungen oder Daten mit Geodatenkomponenten eignet.
Können Redis und MongoDB zusammen verwendet werden?
Die gemeinsame Verwendung von Redis und MongoDB ist in vielen Anwendungen eine gängige Strategie. Die Geschwindigkeit von Redis ist eine natürliche Ergänzung zu den langfristigen Speichermöglichkeiten von MongoDB. Sie können sowohl Redis als auch MongoDB verwenden, um die Datenbankleistung zu optimieren, die Skalierbarkeit zu erhöhen und ein flexibles System für Ihre Anwendungen bereitzustellen.
Sie könnten Redis beispielsweise für die Datenverarbeitung in Echtzeit verwenden. Redis eignet sich optimal für die Erfassung und Verarbeitung von Live-Streaming-Daten, da es Datenverarbeitungsszenarien in Echtzeit bewältigt. Anschließend können Sie die Daten oder Ergebnisse, die Sie mit Redis verarbeiten, in MongoDB zur Archivierung und für komplexere integrierte Analysen speichern.
Ein anderes Beispiel ist ein hybrides Datenmodell für Redis und MongoDB. Sie können den Schlüsselwertspeicher von Redis und das dokumentenorientierte Modell von MongoDB gleichzeitig verwenden. Redis bietet ein einfaches System für den Zugriff auf Metadaten, auf die Sie häufig zugreifen. Für komplexere Datenstrukturen können Sie MongoDB verwenden.
Zusammenfassung der Unterschiede: Redis im Vergleich zu MongoDB
Redis |
MongoDB |
|
Datenmodell |
Schlüsselwertbasierter Datenspeicher im Speicher. |
Persistente Dokumentdatenbank. |
Skalierung |
Redis bietet nicht so viel Skalierbarkeit. |
Eine MongoDB-Datenbank ist durch horizontale Skalierung, Fragmentierung und Partitionierung von Daten hoch skalierbar. |
Verfügbarkeit |
Sie benötigen eine separate Komponente mit der Bezeichnung Redis Sentinel, um Cluster auf automatisches Failover zu überwachen. |
Standardmäßig automatisches Failover. |
Integrität |
Redis bietet Befehle zum Erstellen einzelner atomarer Operationen. Der Rollback muss im Anwendungscode verwaltet werden. |
MongoDB verfügt über integrierte Unterstützung für ACID-Transaktionen und Rollbacks mit mehreren Dokumenten. |
Abfragesprache |
Redis verwendet Befehle für die Abfrage. |
MongoDB verwendet MongoDB Query Language (MQL), um Daten abzufragen und zu bearbeiten. |
Wie kann AWS Sie bei Ihren Redis- und MongoDB-Anforderungen unterstützen?
Amazon Web Services (AWS) bietet zahlreiche Angebote zur Unterstützung Ihrer Arbeit mit Redis und MongoDB.
Amazon MemoryDB für Redis ist ein Redis-kompatibler, langlebiger In-Memory-Datenbank-Service, der eine extrem schnelle Leistung bietet. Es ist speziell für moderne Anwendungen konzipiert, die mit Microservices-Architekturen erstellt wurden. MemoryDB speichert Daten dauerhaft über mehrere Availability Zones (AZs) hinweg unter Verwendung eines Multi-AZ-Transaktionsprotokolls, um schnelles Failover, Datenbankwiederherstellung und Knotenneustarts zu ermöglichen. Sie können eine Leselatenz im Mikrosekundenbereich und eine Schreiblatenz im einstelligen Millisekundenbereich sowie einen hohen Durchsatz erzielen.
Amazon ElastiCache for Redis ist ein vollständig verwalteter Caching-Service, der die Einrichtung, den Betrieb und die Skalierung eines Cache in der Cloud vereinfacht. Mit ElastiCache für Redis können Sie die Anwendungsgeschwindigkeit beschleunigen und Lese- und Schreiblatenzen im Mikrosekundenbereich beseitigen, indem Sie Daten aus primären Datenbanken und Datenspeichern zwischenspeichern.
Amazon DocumentDB (mit MongoDB-Kompatibilität) ist eine vollständig verwaltete native JSON-Dokumentendatenbank, die die Workloads von Unternehmen mühelos skaliert. Durch die Möglichkeit, Daten in einem flexiblen JSON-Format zu speichern, abzufragen, zu indizieren und zu aggregieren, können Sie Anwendungen schneller als je zuvor erstellen und weiterentwickeln. Mit einer verwalteten Datenbank müssen Sie keine manuellen Datenbankverwaltungsaufgaben mehr durchführen, was die Produktivität erhöht und die Entwicklung optimiert.
Beginnen Sie mit Redis und MongoDB in AWS, indem Sie noch heute ein Konto erstellen.
Weitere Schritte mit AWS
Erfahren Sie, wie Sie mit Redis in AWS beginnen können
Informationen zu den ersten Schritten mit MongoDB in AWS