MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Redis gegen MongoDB

1. Übersicht

Oft finden wir es schwierig, uns für eine nicht relationale Datenbank als primären Datenspeicher für unsere Anwendungen zu entscheiden.

In diesem Artikel untersuchen wir zwei beliebte nicht relationale Datenbanken, Redis und MongoDB.

Zunächst werfen wir einen kurzen Blick auf die Funktionen von Redis und MongoDB. Dann besprechen wir, wann Redis oder MongoDB verwendet werden sollten, indem wir sie miteinander vergleichen.

2. Redis

Redis ist ein In-Memory-Datenstrukturspeicher, der eine Vielzahl von Funktionen bietet. Es ist nützlich als Cache, Nachrichtenbroker und Warteschlange .

2.1. Funktionen

  • Eine dedizierte Befehlszeilenschnittstelle – redis-cli
  • Speichert Schlüssel-Wert-Paare und unterstützt Datenstrukturen wie Liste, Menge und Hash
  • Kann Werte bis zu einer Größe von 512 MB speichern
  • Erlaubt das Veröffentlichen und Abonnieren von Nachrichten mithilfe von Pub/Sub-Nachrichtenwarteschlangen
  • Geo-Unterstützung durch Bereitstellung spezieller Befehle zur Verwaltung von Geodaten in Echtzeit
  • Erlaubt die Ausführung von LUA-Skripten
  • Bietet verschiedene Clients für gängige Technologien an
  • Unterstützt IoT und eingebettete Geräte
  • Spring Data-Unterstützung
  • Spring Cache-Unterstützung mit Java-Clients wie Redisson

2.2. Installation

Wir können den neuesten Redis-Server von der offiziellen Website herunterladen und installieren:

$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make

3. MongoDB

MongoDB ist eine NoSQL-Dokumentdatenbank, die Informationen in einer JSON-ähnlichen Dokumentstruktur speichert. Es ist nützlich als schemaloser Datenspeicher für sich schnell ändernde Anwendungen, Prototyping und Startups in einer Design- und Implementierungsphase .

3.1. Funktionen

  • Bietet eine interaktive Befehlszeilenschnittstelle MongoDB Shell (mongosh ), um Verwaltungsvorgänge durchzuführen und Daten abzufragen/aktualisieren
  • JSON-basierte Abfragestruktur mit Unterstützung von Joins
  • Unterstützt verschiedene Suchtypen wie geobasierte Suche, Diagrammsuche und Textsuche
  • Unterstützt ACID-Transaktionen mit mehreren Dokumenten
  • Spring Data-Unterstützung
  • Verfügbar in den Editionen Community, Enterprise und Cloud (MongoDB Atlas)
  • Verschiedene Treiber für wichtige Technologien wie C++, Java, Go, Python, Rust und Scala
  • Stellt eine GUI zum Erkunden und Bearbeiten von Daten über MongoDB Compass bereit
  • Bietet eine visuelle Darstellung von Daten mit MongoDB-Diagrammen
  • MongoDB BI Connector bietet Verbindungen zu BI- und Analyseplattformen

3.2. Installation

Wir können den neuesten MongoDB-Server herunterladen oder, wenn Sie macOS verwenden, die Community Edition direkt mit Homebrew installieren:

brew tap mongodb/brew
brew install [email protected]

4. Wann sollte Redis verwendet werden?

4.1. Caching

Redis bietet die beste Caching-Leistung seiner Klasse, indem es eine Reaktionszeit von weniger als einer Millisekunde für häufig angeforderte Elemente bereitstellt .

Darüber hinaus ermöglicht es das Festlegen der Ablaufzeit für Schlüssel mit Befehlen wie EXPIRE , VERFALLEN und PEXPIRE .

Gleichzeitig können wir die PERSIST verwenden Befehl, um die Zeitüberschreitung zu entfernen und das Schlüssel-Wert-Paar beizubehalten, was es ideal für das Caching macht.

4.2. Flexible Datenspeicherung

Redis bietet verschiedene Datenstrukturen wie String, List, Set und Hash, um zu entscheiden, wie unsere Daten gespeichert und organisiert werden sollen. Daher gibt uns Redis volle Freiheit bei der Implementierung der Datenbankstrukturen.

Es kann jedoch auch lange dauern, das DB-Design zu durchdenken. Ebenso kann es schwierig sein, die innere Struktur des Schemas mit Redis zu erstellen und zu verwalten.

4.3. Komplexe Datenspeicherung

In ähnlicher Weise können wir mit der Kombination aus Liste, Menge und Hash komplexe Datenstrukturen wie Warteschlangen, Arrays, sortierte Mengen und Graphen implementieren für unseren Speicher.

4.4. Chat, Warteschlange und Nachrichtenbroker

Redis kann Nachrichten mithilfe von Pub/Sub-Nachrichtenwarteschlangen mit Musterabgleich veröffentlichen und abonnieren . Somit kann Redis Echtzeit-Chat und Social-Media-Feed-Anwendungen unterstützen.

Auf ähnliche Weise können wir eine leichtgewichtige Warteschlange mithilfe der Listendatenstruktur implementieren . Darüber hinaus unterstützt die Liste von Redis atomare Operationen und bietet Sperrfunktionen, wodurch sie sich für die Implementierung eines Nachrichtenbrokers eignet.

4.5. Sitzungsspeicher

Redis bietet einen In-Memory-Datenspeicher mit Persistenzfähigkeiten, was es zu einem guten Kandidaten zum Speichern und Verwalten von Sitzungen für Web-/Mobilanwendungen macht.

4.6. IoT und eingebettete Systeme

Laut der offiziellen Dokumentation von Redis unterstützen neuere Versionen ab 4 und 5 den ARM-Prozessor und den Raspberry Pi .

Außerdem läuft es auf Andriod, und es werden Anstrengungen unternommen, um Android als offiziell unterstützte Plattform aufzunehmen.

Also scheint Redis ideal für IoT und eingebettete Systeme zu sein, wovon profitiert sein kleiner Speicherbedarf und geringe CPU-Anforderungen.

4.7. Echtzeitverarbeitung

Da es sich um eine blitzschnelle In-Memory-Datenstruktur handelt, können wir sie für Echtzeitverarbeitungsanwendungen verwenden.

Beispielsweise kann Redis Anwendungen effizient bedienen, die Funktionen wie Aktienkurswarnungen, Bestenlisten und Echtzeitanalysen bieten.

4.8. Geodaten-Apps

Redis bietet eine speziell entwickelte In-Memory-Datenstruktur Geo Set – basierend auf einem sortierten Set – für die Verwaltung von Geodaten-Indizes. Außerdem bietet es spezifische Geo-Befehle wie GEOADD , GEOPOS und GEORADIUS zum Hinzufügen, Lesen und Analysieren von Geodaten.

Daher können wir mit Redis Echtzeit-Geodatenanwendungen mit standortbasierten Funktionen wie Fahrzeit und Fahrstrecke erstellen .

5. Wann sollte MongoDB verwendet werden?

5.1. Dynamische Abfragen

MongoDB bietet eine Reihe leistungsstarker Abfragetools. Außerdem bietet es eine breite Palette flexibler Abfrageschemata wie geobasierte Suche, Diagrammsuche und Textsuche für einen effizienten Datenabruf.

Gleichzeitig scheint MongoDB mit der Unterstützung von JSON-strukturierten Abfragen eine bessere Wahl für Szenarien zu sein, in denen Datensuche und -analyse tägliche Aktivitäten sind.

5.2. Sich schnell änderndes Schema

MongoDB kann in der Entwurfs- und frühen Implementierungsphase hilfreich sein, wenn wir schnelle Änderungen an unserem Schema benötigen. Gleichzeitig macht es keine Annahmen zu den zugrunde liegenden Daten und optimiert sich selbst, ohne ein Schema zu benötigen.

5.3. Prototyping und Hackathons

Durch die Einhaltung der JSON-ähnlichen Dokumentstruktur ermöglicht MongoDB ein schnelles Prototyping, schnelle Integrationen mit Front-End-Kanälen und Hackathons .

Gleichzeitig kann es für Nachwuchsteams nützlich sein, die sich nicht mit der Komplexität eines RDBMS auseinandersetzen möchten.

5.4. Kataloge

Durch die Bereitstellungeines dynamischen, selbstbeschreibenden Schemas erleichtert MongoDB das Hinzufügen von Produkten, Funktionen und Empfehlungen für Kataloge wie E-Commerce, Asset Management und Inventar.

Wir können in MongoDB auch ausdrucksstarke Abfragen für Funktionen wie erweiterte Suche und Analyse verwenden, indem wir ein Feld oder eine Reihe von Feldern des JSON-strukturierten Dokuments indizieren.

5.5. Mobile Apps

Die JSON-Dokumentstruktur von MongoDB ermöglicht das Speichern verschiedener Datentypen von verschiedenen Geräten zusammen mit Geodatenindizes.

Außerdem ermöglicht die horizontale Skalierbarkeit mit nativem Sharding eine einfache Skalierung einer mobilen App. Daher kann MongoDB unzählige Benutzer bedienen, Petabyte an Daten verarbeiten und Hunderttausende von Vorgängen pro Sekunde unterstützen, was es zu einer würdigen Wahl für die Unterstützung mobiler Apps macht.

5.6. Inhaltsreiche Apps

Es ist nicht einfach, verschiedene Inhalte in RDBMS für moderne inhaltsreiche Apps zu integrieren. Andererseits ermöglicht MongoDB das Speichern und Bereitstellen von reichhaltigen Inhalten wie Text, Audio und Video .

Außerdem können wir mit MongoDB GridFS problemlos Dateien speichern, die größer als 16 MB sind . Es ermöglicht den Zugriff auf einen Teil großer Dateien, ohne die gesamte Datei in den Speicher zu laden.

Darüber hinaus synchronisiert es automatisch unsere Dateien und Metadaten auf allen Servern. Daher scheint MongoDB eine geeignetere Wahl für die Unterstützung inhaltsreicher Apps zu sein.

5.7. Gaming-Apps

Ähnlich wie mobile und inhaltsreiche Apps erfordert auch Gaming eine massive Skalierung und dynamische Datenstrukturen. Daher kann MongoDB eine vielversprechende Wahl für Gaming-Apps sein.

5.8. Globaler Cloud-Datenbankdienst

MongoDB Atlas ist für mehrere Cloud-Dienste wie AWS, Google Cloud und Azure verfügbar . Darüber hinaus bietet es mit integriertem Replikations- und Failover-Mechanismus ein hochverfügbares verteiltes System. Daher können wir die Datenbank schnell bereitstellen und verwalten und sie als globalen Cloud-Datenbankdienst nutzen.