AnkündigungWir stellen MongoDB 8.0 vor, das schnellste MongoDB aller Zeiten! Mehr erfahren > >>
AnkündigungVoyage AI und MongoDB unterstützen ab sofort gemeinsam genauere und vertrauenswürdigere KI-Anwendungen auf Atlas. Mehr erfahren > >>

Was ist eine Dokumentendatenbank?

Eine Dokumentendatenbank (auch bekannt als dokumentenorientierte Datenbank oder Dokumentenspeicher) ist eine Datenbank, die Informationen in Dokumenten speichert.

Dokumentendatenbanken bieten eine Vielzahl von Vorteilen, darunter:

  • Ein intuitives Datenmodell, mit dem Entwickler schnell und einfach arbeiten können
  • Ein flexibles Schema, das es ermöglicht, das Datenmodell weiterzuentwickeln, wenn sich die Anwendungsanforderungen ändern
  • Die Fähigkeit, horizontal zu skalieren

Aufgrund dieser Vorteile sind Dokumentendatenbanken Allzweckdatenbanken, die in einer Vielzahl von Anwendungsfällen und Branchen eingesetzt werden können.

Dokumentendatenbanken gelten als nicht relationale (oder NoSQL) Datenbanken. Anstatt Daten in festen Zeilen und Spalten zu speichern, verwenden Dokumentendatenbanken flexible Dokumente. Dokumentdatenbanken sind die beliebteste Alternative zu relationalen Datenbanken in Tabellenform. Erfahren Sie mehr über NoSQL-Datenbanken.

Inhaltsverzeichnis:

Was sind Dokumente?

Ein Dokument ist ein Datensatz in einer Dokumentdatenbank. Ein Dokument speichert normalerweise Informationen über ein Objekt und alle zugehörigen Metadaten.

Dokumente speichern Daten in Feld-Werte-Paaren. Die Werte können verschiedene Typen und Strukturen haben, darunter Zeichenfolgen, Zahlen, Daten, Arrays oder Objekte. Dokumente können in Formaten wie JSON, BSON und XML gespeichert werden.

So sieht ein JSON-Dokument aus, das Informationen über einen Benutzer namens Tom speichert.

 

 

Collections

Eine Sammlung ist eine Gruppe von Dokumenten. In Sammlungen werden normalerweise Dokumente mit ähnlichem Inhalt gespeichert.

Da Dokumentdatenbanken über flexible Schemata verfügen, müssen nicht alle Dokumente in einer Sammlung dieselben Felder aufweisen. Beachten Sie, dass einige Dokumentdatenbanken eine Schemaüberprüfung anbieten, sodass das Schema bei Bedarf gesperrt werden kann.

Wenn wir mit dem obigen Beispiel fortfahren, könnte das Dokument mit Informationen über Tom in einer Sammlung mit dem Namen Benutzer gespeichert werden. Um Informationen über andere Benutzer zu speichern, könnten der „Benutzer“-Sammlung weitere Dokumente hinzugefügt werden. Beispielsweise könnte das folgende Dokument, das Informationen über Donna enthält, der Sammlung Benutzer hinzugefügt werden.

 

 

Beachten Sie, dass das Dokument für Donna nicht dieselben Felder enthält wie das Dokument für Tom. Die Sammlung Benutzer nutzt ein flexibles Schema, um die für jeden Benutzer vorhandenen Informationen zu speichern.

CRUD-Operationen

Dokumentdatenbanken verfügen typischerweise über eine API oder Abfragesprache, die es Entwicklern ermöglicht, CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) auszuführen.

  • Erstellen: Dokumente können in der Datenbank erstellt werden. Jedes Dokument hat eine eindeutige Kennung.
  • Lesen: Dokumente können aus der Datenbank abgerufen werden. Die API oder Abfragesprache ermöglicht es Entwicklern, Dokumente anhand ihrer eindeutigen Kennungen oder Feldwerte abzufragen. Indizes können der Datenbank hinzugefügt werden, um die Leseleistung zu verbessern.
  • Aktualisieren: Vorhandene Dokumente können aktualisiert werden – entweder vollständig oder teilweise.
  • Löschen: Dokumente können aus der Datenbank entfernt werden.

Was sind die wichtigsten Merkmale von Dokumentendatenbanken?

Dokumentdatenbanken haben die folgenden Hauptmerkmale:

Was unterscheidet Dokumentendatenbanken von relationalen Datenbanken?

Drei Schlüsselfaktoren unterscheiden Dokumentdatenbanken von relationalen Datenbanken:

  1. Die Intuitivität des Datenmodells: Dokumente werden den Objekten im Code zugeordnet, was die Arbeit mit ihnen viel natürlicher macht. Es besteht keine Notwendigkeit, Daten über Tabellen hinweg zu zerlegen, teure Joins durchzuführen oder eine separate ORM-Schicht (Object Relational Mapping) zu integrieren. Daten, auf die gemeinsam zugegriffen wird, werden gemeinsam gespeichert, sodass Entwickler weniger Code schreiben müssen und Endbenutzer eine höhere Leistung erzielen.
  2. Die Allgegenwärtigkeit von JSON-Dokumenten: JSON hat sich als etablierter Standard für den Datenaustausch und die Speicherung von Daten durchgesetzt. JSON-Dokumente sind leicht, sprachunabhängig und menschenlesbar. Dokumente sind eine Obermenge aller anderen Datenmodelle, sodass Entwickler die Daten so strukturieren können, wie es ihre Anwendungen benötigen – Rich Objects, Schlüssel-Wert-Paare, Tabellen, Geodaten und Zeitreihen oder die Knoten und Kanten eines Graphen.
  3. Die Flexibilität des Schemas: Das Schema eines Dokuments ist dynamisch und selbstbeschreibend, sodass Entwickler es nicht zuerst in der Datenbank vordefinieren müssen. Die Felder können von Dokument zu Dokument variieren. Entwickler können die Struktur jederzeit ändern, ohne dass störende Schemamigrationen erforderlich sind. Einige Dokumentdatenbanken bieten eine Schemaüberprüfung an, sodass Sie optional Regeln für Dokumentstrukturen durchsetzen können.

Erfahren Sie mehr über NoSQL- und relational database.

Ist es wirklich einfacher, mit Dokumenten zu arbeiten als mit Tabellen?

Entwickler empfinden die Arbeit mit Daten in Dokumenten häufig als einfacher und intuitiver als die Arbeit mit Daten in Tabellen. Die Dokumente entsprechen den Datenstrukturen der meisten gängigen Programmiersprachen. Die Entwickler müssen sich nicht mehr darum kümmern, zusammengehörige Daten beim Speichern manuell auf mehrere Tabellen aufzuteilen oder beim Abrufen wieder zusammenzufügen. Sie müssen außerdem kein ORM verwenden, das die Datenbearbeitung für sie bewältigt. Stattdessen können sie ganz einfach direkt in ihren Anwendungen mit den Daten arbeiten.

Werfen wir einen weiteren Blick auf ein Dokument für einen Benutzer namens Tom.

Users

 

Alle Informationen über Tom sind in einem einzigen Dokument gespeichert.

Überlegen wir nun, wie wir dieselben Informationen in einer relationalen Datenbank speichern können. Wir beginnen mit der Erstellung einer Tabelle, in der die grundlegenden Informationen über den Benutzer gespeichert werden.

Users

IDfirst_nameemailcell
1Tomtom@example.com765-555-5555

Ein Benutzer kann viele Dinge „liken“ (d. h. es besteht eine 1:n-Beziehung zwischen einem Benutzer und seinen „Likes“), daher erstellen wir eine neue Tabelle mit dem Namen „Likes“, um die „Likes“ eines Benutzers zu speichern. Die Tabelle „Likes“ wird einen Fremdschlüssel haben, der auf die Spalte „ID“ in der Tabelle „Benutzer“ verweist.

Likes

IDuser_idlike
101fashion
111spas
121shopping

Ebenso kann ein Benutzer viele Geschäfte betreiben, daher werden wir eine neue Tabelle mit dem Namen „Geschäfte“ erstellen, um Geschäftsinformationen zu speichern. Die Tabelle „Businesses“ wird einen Fremdschlüssel haben, der auf die Spalte ID in der Tabelle Benutzer verweist.

Unternehmen

IDuser_idnamepartnerstatusdate_founded
201Entertainment 1080JeanBankrupt2011-05-19
211Swag for TweensNULLNULL2012-11-01

 

In diesem einfachen Beispiel sehen wir, dass Daten über einen Benutzer in einem einzigen Dokument in einer Dokumentdatenbank oder in drei Tabellen in einer relationalen Datenbank gespeichert werden können. Wenn ein Entwickler Informationen über einen Benutzer in der Dokumentendatenbank abrufen oder aktualisieren möchte, kann er eine Abfrage ohne Joins erstellen. Die Interaktion mit der Datenbank ist einfach, und die Modellierung der Daten in der Datenbank ist intuitiv.

Besuchen Sie Übertragung von Begriffen und Konzepten von SQL auf MongoDB, um mehr zu erfahren.

Welche Beziehungen bestehen zwischen Dokumentendatenbanken und anderen Datenbanken?

Das Dokumentmodell ist eine Obermenge anderer Datenmodelle, darunter Schlüssel-Wert-Paare, relationale Datenmodelle, Objektdatenmodelle, Graphendaten und georäumliche Datenmodelle.

Aufgrund ihrer umfangreichen Datenmodellierungsfunktionen sind Dokumentendatenbanken Allzweckdatenbanken, die Daten für eine Vielzahl von Anwendungsfällen speichern können.

Warum nicht einfach JSON in einer relationalen Datenbank verwenden?

Da Dokumentendatenbanken Entwicklern die Möglichkeit geben, schneller zu arbeiten, haben die meisten relationalen Datenbanken Unterstützung für JSON hinzugefügt. Jedoch bringt das bloße Hinzufügen eines JSON-Datentyps nicht die Vorteile einer Datenbank mit nativer JSON-Unterstützung. Warum? Weil der relationale Ansatz die Produktivität der Entwickler beeinträchtigt, anstatt sie zu verbessern. Die Entwickler müssen sich dabei mir Folgendem herumschlagen:

Proprietäre Erweiterungen

Das Arbeiten mit Dokumenten erfordert die Verwendung von benutzerdefinierten, anbieterspezifischen SQL-Funktionen, die den meisten Entwicklern nicht vertraut sind und nicht mit Ihren bevorzugten SQL-Tools funktionieren. Beim Hinzufügen von Low-Level-JDBC/ODBC-Treiber und ORMs stehen Entwickler vor komplexen Entwicklungsprozessen, die zu einer geringen Produktivität führen.

Primitive Datenverarbeitung

Die Darstellung von JSON-Daten als einfache Zeichenketten und Zahlen anstelle der umfangreichen Datentypen, die von nativen Dokumentdatenbanken wie MongoDB unterstützt werden, macht das Berechnen, Vergleichen und Sortieren von Daten komplex und fehleranfällig.

Schlechte Datenqualität und starre Tabellen

Relationale Datenbanken bieten kaum Möglichkeiten, das Schema von Dokumenten zu validieren, sodass Sie keine Möglichkeit haben, Qualitätskontrollen auf Ihre JSON-Daten anzuwenden. Und Sie müssen weiterhin ein Schema für Ihre regulären Tabellendaten definieren, mit dem gesamten zusätzlichen Overhead, der entsteht, wenn Sie Ihre Tabellen ändern müssen, während sich die Funktionen Ihrer Anwendung weiterentwickeln.

Niedrige Leistung

Die meisten relationalen Datenbanken führen keine Statistiken über JSON-Daten, was den Abfrageplaner daran hindert, Abfragen für Dokumente zu optimieren, und Sie daran hindert, Ihre Abfragen anzupassen.

Keine native horizontale Skalierung

Herkömmliche relationale Datenbanken bieten keine Möglichkeit, die Datenbank auf mehrere Instanzen zu partitionieren („sharden“), um sie bei wachsender Arbeitslast zu skalieren. Stattdessen müssen Sie Sharding selbst in der Anwendungsschicht implementieren oder auf kostspielige Scale-up-Systeme zurückgreifen.

Was sind die Stärken und Schwächen von Dokumentendatenbanken?

Dokumentdatenbanken haben viele Stärken:

  • Das Dokumentmodell ist allgegenwärtig, intuitiv und ermöglicht eine schnelle Softwareentwicklung.
  • Das flexible Schema ermöglicht die Anpassung des Datenmodells, wenn sich die Anforderungen einer Anwendung ändern.
  • Dokumentdatenbanken haben reichhaltige APIs und Abfragesprachen, die es Entwicklern ermöglichen, einfach mit ihren Daten zu interagieren.
  • Dokumentendatenbanken sind verteilt (was sowohl horizontale Skalierung als auch globale Datenverteilung ermöglicht) und ausfallsicher.

Diese Stärken machen Dokumentdatenbanken zu einer ausgezeichneten Wahl für die allgemeine Datenbank.

Eine häufig genannte Schwäche von Dokumentendatenbanken ist, dass viele keine Multi-Dokument-ACID-Transaktionen unterstützen. Wir schätzen, dass 80%-90% der Anwendungen, die das Dokumentenmodell nutzen, keine Transaktionen mit mehreren Dokumenten verwenden müssen.

Beachten Sie, dass einige Dokumentdatenbanken wie MongoDB Multi-Dokument-ACID-Transaktionen unterstützen.

Besuchen Sie Was sind ACID-Transaktionen?, um mehr darüber zu erfahren, wie das Dokumentmodell die Notwendigkeit für Transaktionen mit mehreren Dokumenten größtenteils eliminiert und wie MongoDB Transaktionen in den seltenen Fällen unterstützt, in denen sie erforderlich sind.

Was sind die Anwendungsfälle für Dokumentendatenbanken?

Dokumentendatenbanken sind Allzweckdatenbanken, die für eine Vielzahl von Anwendungsfällen sowohl für transaktionale als auch für analytische Anwendungen abdecken:

  • Single View oder Datenhub
  • Verwaltung und Personalisierung von Kundendaten
  • Internet of Things (IoT) und Zeitreihendaten
  • Produktkataloge und Inhaltsverwaltung
  • Zahlungsabwicklung
  • Mobile Anwendungen
  • Mainframe-Entlastung
  • Betriebsanalysen
  • Real-Time Analytics

Fazit

Dokumentendatenbanken verwenden das intuitive und flexible Dokumentdatenmodell, um Daten zu speichern. Dokumentendatenbanken sind universelle Datenbanken, die für eine Vielzahl von Anwendungsfällen in verschiedenen Branchen eingesetzt werden können.

Beginnen Sie mit Dokumentdatenbanken, indem Sie eine Datenbank in MongoDB Atlas, der Datenplattform von MongoDB, erstellen. Atlas bietet eine großzügige, dauerhaft kostenlose Stufe, mit der Sie experimentieren und das Dokumentmodell erkunden können.

FAQ

Profitieren Sie noch heute von Atlas

Sie sind in Sekundenschnelle startbereit. Unsere kostenlosen Cluster bieten über 512 MB Speicherplatz, sodass Sie die Möglichkeiten unserer Plattform anhand von Beispieldaten kennenlernen können.
Kostenlos testenKontakt zum Vertrieb
IHR EINSTIEG MIT FOLGENDEN VORTEILEN:
  • Mehr als 125 Regionen weltweit
  • Beispieldatensätze
  • Lückenlose Authentifizierung
  • Lückenlose Verschlüsselung
  • Kommandozeilen-Tools