Einführung
Mit einzigartigen Fähigkeiten überwinden NoSQL-Datenbanken die Einschränkungen des relationalen Datenbankmodells. NoSQL ist ein Überbegriff für vier Hauptuntergruppen von NoSQL-Datenbanken:
- Schlüsselwertdatenbanken
- Spaltendatenbanken
- Graphdatenbanken
- Dokumentendatenbanken
In diesem Artikel erklären wir, was eine Dokumentendatenbank ist, beschreiben ihre Vor- und Nachteile und liefern Beispiele.
Dokumentdatenbankdefinition
Eine Dokumentendatenbank ist eine Art NoSQL-Datenbank, die Daten als JSON-Dokumente anstelle von Spalten und Zeilen speichert. JSON ist eine native Sprache, die sowohl zum Speichern als auch zum Abfragen von Daten verwendet wird. Diese Dokumente können in Sammlungen zusammengefasst werden, um Datenbanksysteme zu bilden.
Jedes Dokument besteht aus einer Reihe von Schlüssel-Wert-Paaren. Hier ist ein Beispiel für ein Dokument, das aus 4 Schlüsselwertpaaren besteht:
{
"ID" : "001",
"Book" : "Java: The Complete Reference",
"Genre" : "Reference work",
"Author" : "Herbert Schildt",
}
Die Verwendung von JSON ermöglicht es App-Entwicklern, Daten in demselben Dokumentmodellformat zu speichern und abzufragen, das sie zum Organisieren des Codes ihrer App verwenden. Das Objektmodell kann in andere Formate wie JSON, BSON und XML konvertiert werden.
Relationale vs. Dokumentendatenbank
Managementsysteme für relationale Datenbanken (RDBMS) basieren auf der Structured Query Language (SQL). NoSQL nicht.
Ein RDBMS konzentriert sich auf die Erstellung von Beziehungen zwischen Dateien, um Daten zu speichern und zu lesen. Dokumentendatenbanken konzentrieren sich auf die Daten selbst und Beziehungen werden mit verschachtelten Daten dargestellt.
Schlüsselvergleiche zwischen relationalen und Dokumentendatenbanken:
RDBMS | Dokumentendatenbanksystem |
---|---|
Um das Konzept von Beziehungen herum strukturiert. | Fokussiert auf Daten eher als Beziehungen. |
Organisiert Daten in Tupeln (oder Zeilen). | Dokumente haben Eigenschaften ohne theoretische Definitionen, statt Reihen. |
Definiert Daten (bildet Beziehungen) über Einschränkungen und Fremdschlüssel (z. B. eine untergeordnete Tabelle verweist über ihre ID auf die Haupttabelle). | Keine DDL-Sprache zum Definieren von Schemas. |
Verwendet DDL (Data Definition Language) zum Erstellen von Beziehungen. | Beziehungen dargestellt durch verschachtelte Daten , keine Fremdschlüssel (jedes Dokument kann andere enthalten, die darin verschachtelt sind, was zu einer N:1- oder 1:N-Beziehung zwischen den beiden Dokumententitäten führt). |
Bietet extreme Konsistenz , entscheidend für einige Anwendungsfälle wie tägliche Bankgeschäfte. | Bietet endgültige Konsistenz mit einem Zeitraum der Inkonsistenz. |
Merkmale von Dokumentendatenbanken
Dokumentendatenbanken bieten schnelle Abfragen, eine für Big Data gut geeignete Struktur, flexible Indizierung und eine vereinfachte Methode zur Pflege der Datenbank. Es ist effizient für Web-Apps und wurde von großen IT-Unternehmen wie Amazon vollständig integriert.
Obwohl SQL-Datenbanken eine große Stabilität und vertikale Macht haben, kämpfen sie mit übergroßen Datenbanken. Anwendungsfälle, die einen sofortigen Zugriff auf Daten erfordern, wie z. B. Gesundheits-Apps, eignen sich besser für Dokumentendatenbanken. Dokumentdatenbanken erleichtern die Abfrage von Daten mit demselben Dokumentmodell, das zum Programmieren der Anwendung verwendet wird.
Anwendungsfälle für Dokumentendatenbanken
Allgemeine Anwendungsfälle | |
---|---|
Benutzerprofile | Extrahieren von Big Data in Echtzeit |
Buchdatenbanken | Daten unterschiedlicher Struktur |
Inhaltsverwaltung | Kataloge |
Patientendaten |
Wir werden einige der oben genannten Anwendungsfälle in den folgenden Abschnitten ausführlicher behandeln.
Buchdatenbank
Sowohl relationale als auch NoSQL-Dokumentsysteme werden verwendet, um eine Buchdatenbank zu bilden, wenn auch auf unterschiedliche Weise.
Der relationale Ansatz würde die Beziehung zwischen Büchern und Autoren über Tabellen mit IDs darstellen – ein Autor Tisch und Bücher Tisch. Es zwingt jeden Autor, mindestens einen Eintrag in der Books-Tabelle zu haben, indem es Nullwerte verbietet.
Im Vergleich dazu lässt Sie das Dokumentenmodell verschachteln . Beziehungen werden natürlicher und einfacher dargestellt, indem sichergestellt wird, dass jedes Autorendokument eine Eigenschaft hat genannt Bücher , mit einer Reihe verwandter Buchdokumente in der Eigenschaft. Wenn Sie nach einem Autor suchen, wird die gesamte Büchersammlung angezeigt.
Inhaltsverwaltung
Entwickler verwenden Dokumentendatenbanken, um Video-Streaming-Plattformen, Blogs und ähnliche Dienste zu erstellen. Jede Datei wird als einzelnes Dokument gespeichert und die Datenbank ist einfacher zu pflegen, wenn sich der Dienst im Laufe der Zeit weiterentwickelt. Bedeutende Datenänderungen, wie z. B. Datenmodelländerungen, erfordern keine Ausfallzeit, da keine Schemaaktualisierung erforderlich ist.
Kataloge
Dokumentendatenbanken sind viel effizienter als relationale Datenbanken, wenn es um das Speichern und Lesen von Katalogdateien geht. In Katalogen können Tausende von Attributen gespeichert sein, und Dokumentendatenbanken bieten schnelle Lesezeiten. In Dokumentendatenbanken werden Attribute, die sich auf ein einzelnes Produkt beziehen, in einem einzelnen Dokument gespeichert. Das Ändern der Attribute eines Produkts wirkt sich nicht auf andere Dokumente aus.
Vor- und Nachteile der Dokumentendatenbank
Nachfolgend sind einige wichtige Vorteile aufgeführt undNachteile von Dokumentendatenbanken:
Vorteile der Dokumentendatenbank | Nachteile der Dokumentendatenbank |
---|---|
Schemalos | Einschränkungen der Konsistenzprüfung |
Schnellere Erstellung und Pflege | Atomizitätsschwächen |
Keine Fremdschlüssel | Sicherheit |
Offene Formate | |
Integrierte Versionierung |
Die Vor- und Nachteile werden in den folgenden Abschnitten näher erläutert.
Vorteile
- Schemalos . Es gibt keine Beschränkungen hinsichtlich Format und Struktur der Datenspeicherung. Dies ist gut für die Beibehaltung vorhandener Daten in großen Mengen und unterschiedlichen strukturellen Zuständen, insbesondere in einem sich ständig verändernden System.
- Schnellere Erstellung und schnelleres Auto e. Sobald Sie das Dokument erstellt haben, ist nur minimale Wartung erforderlich, die so einfach sein kann wie das einmalige Hinzufügen Ihres komplexen Objekts.
- Keine Fremdschlüssel . Ohne diese Beziehungsdynamik können Dokumente voneinander unabhängig sein.
- Offene Formate . Ein sauberer Build-Prozess, der XML, JSON und andere Derivate verwendet, um Dokumente zu beschreiben.
- Integrierte Versionierung . Wenn Ihre Dokumente größer werden, können sie auch an Komplexität zunehmen. Versionierung verringert Konflikte.
Nachteile
- Einschränkungen der Konsistenzprüfung . Im Anwendungsbeispiel der Buchdatenbank oben wäre es möglich, nach Büchern eines nicht existierenden Autors zu suchen. Sie könnten die Büchersammlung durchsuchen und Dokumente finden, die nicht mit einer Autorensammlung verbunden sind.
Jede Auflistung kann auch Autoreninformationen für jedes Buch duplizieren. Diese Inkonsistenzen sind in manchen Kontexten nicht signifikant, aber bei höheren Standards von RDB-Konsistenzprüfungen beeinträchtigen sie die Datenbankleistung ernsthaft. - Atomizitätsschwächen . Mit relationalen Systemen können Sie auch Daten von einem Ort aus ändern, ohne dass JOINs erforderlich sind. Alle neuen Leseabfragen erben Änderungen an Ihren Daten über einen einzigen Befehl (z. B. das Aktualisieren oder Löschen einer Zeile).
Bei Dokumentdatenbanken müssen Sie bei einer Änderung, die zwei Sammlungen betrifft, zwei separate Abfragen (pro Sammlung) ausführen. Dies verstößt gegen die Atomaritätsanforderungen. - Sicherheit . Fast die Hälfte aller Webanwendungen verlieren heute aktiv vertrauliche Daten. Besitzer von NoSQL-Datenbanken müssen daher sorgfältig auf Sicherheitslücken in Webanwendungen achten.
Beste Dokumentendatenbanken
Amazon DocumentDB
Eigenschaften:
- MongoDB-kompatibel
- Vollständig verwaltet
- Hohe Leistung mit Abfragen mit geringer Latenz
- Starke Compliance und Sicherheit
- Hohe Verfügbarkeit
Verwendet für:
- Amazons Das gesamte Entwicklungsteam verwendet Amazon DocumentDB, um Agilität und Produktivität zu steigern. Sie benötigten verschachtelte Indizes, Aggregationen und Ad-hoc-Abfragen mit einem vollständig verwalteten Prozess.
- Die BBC verwendet es zum Abfragen und Speichern von Daten aus mehreren Datenströmen und zum Kompilieren in einzelne Kundenfeeds. Sie migrierten zu Amazon DocumentDB, um die Vorteile eines vollständig verwalteten Dienstes mit hoher Verfügbarkeit, Beständigkeit und Standardsicherungen zu nutzen.
- Rappi wechselte zu Amazon DocumentDB, um die Programmierzeit zu verkürzen, Dow Jones um den Betrieb zu vereinfachen und Samsung für eine bessere und flexiblere Handhabung großer Baumstämme.
MongoDB
Eigenschaften:
- Ad-hoc-Abfragen
- Optimierte Indizierung für Abfragen
- Sharding
- Lastenausgleich
Verwendet für:
- Forbes Build-Zeit um 58 % verringert, Abonnements um 28 % gesteigert, da neue Funktionen schneller erstellt, einfacher integriert und immer vielfältigere Datentypen besser gehandhabt werden können.
- Toyota fanden es für Entwickler viel einfacher, mit hohen Geschwindigkeiten zu arbeiten, indem sie natürliche JSON-Dokumente verwenden. Es wird mehr Zeit darauf verwendet, den Geschäftswert aufzubauen, anstatt Daten zu modellieren.
Kosmos DB
Eigenschaften:
- Schnelle Lesevorgänge in jeder Größenordnung
- 99.999 % Verfügbarkeit
- Vollständig verwaltet
- NoSQL/Native Core-APIs
- Serverlos, kostengünstig/sofort skalierbar
Verwendet für:
- Coca-Cola erhält Erkenntnisse innerhalb von Minuten und erleichtert so die globale Skalierung. Vor der Migration zu Cosmos DB hat es Stunden gedauert.
- ASOS benötigte eine verteilte Datenbank, die flexibel und nahtlos skaliert werden kann, um über 100 Millionen Einzelhandelskunden weltweit zu verwalten.
ArangoDB
Eigenschaften:
- Schema-Validierungen
- Diverse Indizierung
- Schnell verteilte Cluster
- Effizient im Vergleich zu großen Datensätzen
- Unterstützt mehrere NoSQL-Datenmodelle
- Kombinieren Sie Modelle zu einzelnen Abfragen
Verwendet für:
- Universität Oxford reduzierter Krankenhausaufenthalt und verbesserte Testergebnisse durch die Entwicklung eines webbasierten Bewertungstests für Herz-Lungen-Erkrankungen.
- Flugstatistiken transformierte fragmentierte Flugdaten (Flugstatus, Wetter, Flughafenverspätungen und Referenzdaten) in einen Standard, der genaue, vorhersagbare und analytische Ergebnisse ermöglicht.
Couchbase-Server
Eigenschaften:
- Fähigkeit, globale Bereitstellungen zu verwalten
- Extreme Agilität und Flexibilität
- Schnell im großen Maßstab
- Einfache Cloud-Integrationen
Verwendet für:
- BT nutzte das flexible Datenmodell von Couchbase, um seine Kapazität zur Bereitstellung von Inhalten mit hoher Leistung zu beschleunigen und gleichzeitig problemlos gegen Nachfragespitzen zu skalieren.
- eBay migriert von Oracle für eine kostengünstigere Lösung mit anwendbaren Funktionen (ihres Key-Value-Store/Dokumentensystems). App-Performance und -Verfügbarkeit stiegen, während Entwickler ihr SQL-Know-how nutzen konnten, um ihre CI/CD-Pipeline über ein flexibleres Schema zu beschleunigen.
CouchDB
Eigenschaften:
- Browserbasierte GUI
- Bietet einfachste Replikationen
- Benutzerauthentifizierung
- ACID-Eigenschaften
Verwendet für:
- Meebo, die soziale Plattform, verwendete CouchDB für die webbasierte Schnittstelle und ihre Anwendungen.
- Die BBC verwendete CouchDB für seine Plattformen für dynamische Inhalte.
Wie wählen?
Die kritischen Anforderungen Ihrer App bestimmen, wie Daten strukturiert werden. Ein paar Schlüsselfragen:
- Werden Sie mehr lesen oder schreiben? Relationale Systeme sind überlegen, wenn Sie mehr schreiben, da sie Duplizierungen während Updates vermeiden.
- Wie wichtig ist die Synchronisierung? Relationale Systeme können dies aufgrund ihres ACID-Frameworks besser.
- Wie stark muss Ihr Datenbankschema in Zukunft transformiert werden? Dokumentendatenbanken sind eine erfolgreiche Wahl, wenn Sie mit unterschiedlichen Daten in großem Umfang arbeiten und nur minimale Wartung benötigen.
Weder Dokument noch SQL sind strikt besser als die anderen. Die richtige Wahl hängt von Ihrem Anwendungsfall ab. Berücksichtigen Sie bei Ihrer Entscheidung die Arten von Operationen, die am häufigsten durchgeführt werden.