NewModernize 2-3x faster with MongoDB’s AI-powered Application Modernization Platform. Learn more >
NewSearch & Vector Search now in public preview for Community Edition Read the blog >
NewSearch & Vector Search now in public preview for Community Edition Read the blog >

Was ist eine Dokumentendatenbank?

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

Beispiel eines JSON-Dokuments

Dokumentendatenbanken bieten eine Reihe von Vorteilen, darunter:

  • Ein intuitives Datenmodell, mit dem Entwickler schnell und einfach arbeiten können
  • Ein flexibles schema, das die Weiterentwicklung des Datenmodells bei sich ändernden Anwendungsanforderungen ermöglicht
  • Die Möglichkeit zur horizontalen scale

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

Dokumentdatenbanken 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.

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 und BSON und XML gespeichert werden.

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

{
     "ID": 1,
     "Vorname": "Tom",
     "E-Mail": "tom@example.com",
     "Mobiltelefon": "765-555-5555",
     "Vorlieben": [
        "Mode",
        "Spas",
        "Einkaufen"
     ],
     "Unternehmen": [
        {
           "Name": "Entertainment 1080",
           "Partner": "Jean",
           "Status": "Insolvent",
           "Gründungsdatum": {
              "$date": "2012-05-19T04:00:00Z"
           }
        },
        {
           "Name": "Swag for Tweens",
           "Gründungsdatum": {
              "$date": "2012-11-01T04:00:00Z"
           }
        }
     ]
  }

Sammlungen

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. Einige Dokumentdatenbanken bieten eine Schemaüberprüfung an. Das Schema kann bei Bedarf auch gesperrt werden.

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.

 {
     "ID": 2,
     "Vorname": "Donna",
     "E-Mail": "donna@example.com",
     "Ehepartner": "Joe",
     "Likes": [
        "Spas",
        "Einkaufen",
        "Live-Tweeting"
     ],
     "Unternehmen": [
        {
           "Name": "Castle Realty",
           "Status": "Gedeihend",
           "Gründungsdatum": {
              "$date": "2013-11-21T04:00:00Z"
           }
        }
     ]
  }

Beachten Sie, dass das Dokument für Donna nicht dieselben Felder enthält wie das Dokument für Tom. Die „Benutzer“-Sammlung 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: Bestehende Dokumente können entweder vollständig oder teilweise aktualisiert werden.
  • Löschen: Dokumente können aus der Datenbank gelöscht werden.

Was sind die wichtigsten Merkmale von Dokumentendatenbanken?

Dokumentdatenbanken verfügen über die folgenden Hauptfunktionen:

  • Dokumentmodell: Daten werden in Dokumenten gespeichert (im Gegensatz zu anderen Datenbanken, die Daten in Strukturen wie Tabellen oder Graphen speichern). Dokumente werden in den meisten gängigen Programmiersprachen Objekten zugeordnet, was es Entwicklern ermöglicht, ihre Anwendungen schnell zu entwickeln.
  • Flexibles Schema: Dokumentdatenbanken haben flexible Schemata, was bedeutet, dass nicht alle Dokumente in einer Sammlung dieselben Felder haben müssen. Einige Dokumentdatenbanken bieten eine Schemaüberprüfung an. So kann das Schema auch gesperrt werden.
  • Verteilt und belastbar: Dokumentendatenbanken sind verteilt, was eine horizontale Skalierung (in der Regel günstiger als vertikale Skalierung) und die Verteilung von Daten ermöglicht. Dokumentdatenbanken bieten Ausfallsicherheit durch Replikation.
  • Abfragen über eine API oder Abfragesprache: Dokumentdatenbanken verfügen über eine API oder Abfragesprache, die es Entwicklern ermöglicht, CRUD-Operationen in der Datenbank auszuführen. Entwickler können Dokumente anhand eindeutiger Kennungen oder Feldwerte abfragen.

Was unterscheidet Dokumentendatenbanken von relationalen Datenbanken?

Drei Schlüsselfaktoren unterscheiden Dokumentendatenbanken von relationalen Datenbanken:

1. Die Intuitivität des Datenmodells: Dokumente entsprechen den Objekten im Code, 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 unterschiedlich sein. Entwickler können die Struktur jederzeit ändern, um störende Schemamigrationen zu vermeiden. Einige Dokumentdatenbanken bieten eine Schemaüberprüfung an. Sie können optional Regeln zur Steuerung von Dokumentstrukturen durchgesetzt werden.

Erfahren Sie mehr über NoSQL im Vergleich zu relationalen Datenbanken.

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.

Benutzer

{
     "ID": 1,
     "Vorname": "Tom",
     "E-Mail": "tom@example.com",
     "Mobiltelefon": "765-555-5555",
     "Vorlieben": [
        "Mode",
        "Spas",
        "Einkaufen"
     ],
     "Unternehmen": [
        {
           "Name": "Entertainment 1080",
           "Partner": "Jean",
           "Status": "Insolvent",
           "Gründungsdatum": {
              "$date": "2012-05-19T04:00:00Z"
           }
        },
        {
           "Name": "Swag for Tweens",
           "Gründungsdatum": {
              "$date": "2012-11-01T04:00:00Z"
           }
        }
     ]
  }

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.

Benutzer

IDVornameE-MailMobil
1Tomtom@example.com765-555-5555

Ein Benutzer kann Vieles liken (d. h. es besteht eine Eins-zu-Viele-Beziehung zwischen einem Benutzer und „Gefällt mir“). Daher erstellen wir eine neue Tabelle mit dem Namen „Gefällt mir“, 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.

Gefällt mir

IDBenutzer-IDgefällt
101Mode
111Spas
121Einkaufen

Ebenso kann ein Benutzer mehrere Unternehmen betreiben, daher erstellen wir eine neue Tabelle mit dem Namen „Unternehmen“, um Unternehmensinformationen zu speichern. Die Tabelle „Businesses“ wird einen Fremdschlüssel haben, der auf die Spalte „ID“ in der Tabelle „Users“ verweist.

Unternehmen

IDBenutzer-IDNamePartnerStatusGründungsdatum
201Unterhaltung 1080JeanInsolvenz2011-05-19
211Swag für 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önnten. 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. , wenn Sie dazu mehr erfahren möchten.

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.

  • Schlüssel-Wert-Paare können in einem Dokument mit Feldern und Werten modelliert werden. Jedes Feld in einem Dokument kann indexiert werden, was Entwicklern zusätzliche Flexibilität bei der Abfrage der Daten bietet.
  • Relationale Daten können unterschiedlich (und einige würden sagen intuitiver) modelliert werden, indem verwandte Daten in einem einzigen Dokument mit eingebetteten Dokumenten und Arrays zusammengehalten werden. Zugehörige Daten können auch in separaten Dokumenten gespeichert werden und per Datenbankreferenzen mit den dazugehörigen Daten verknüpft werden.
  • In den meisten gängigen Programmiersprachen werden Dokumente Objekten zugeordnet.
  • Diagramm-Knoten und/oder Kanten können als Dokumente modelliert werden. Kanten können auch durch Datenbankreferenzen modelliert werden. Diagramm-Abfragen können mit Operationen wie $graphLookup ausgeführt werden.
  • Geodaten können als Arrays in Dokumenten modelliert werden.

Ein vierstufiges Diagramm:
 1. Dokumentmodell
 2. Schlüssel-Wert-Paare, Relational, Objekte, Graph, Geospatial
 3. Einheitliche Schnittstelle
 4. Transaktional, Suche, Mobil, Echtzeitanalyse, Data Lake Das Dokumentmodell ist eine Obermenge anderer Datenmodelle

Aufgrund ihrer umfangreichen Datenmodellierungsfähigkeiten sind Dokumentdatenbanken universelle Datenbanken, 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.


Geringe 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 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?

Dokumentendatenbanken haben viele Stärken:

  • Das Dokumentenmodell 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 aber 80%-90% der Anwendungen, die das Dokumentmodell nutzen, keine Transaktionen mit mehreren Dokumenten benötigen.

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 Allzweck-Datenbanken, die eine Vielzahl von Anwendungsfällen sowohl für transaktionale als auch für analytische Anwendungen abdecken:

  • Single View oder Daten-Hub
  • Verwaltung und Personalisierung von Kundendaten
  • Internet of Things (IoT) und Zeitreihendaten
  • Produktkataloge und Content-Management
  • Zahlungsabwicklung
  • Mobile Apps
  • Mainframe-Auslagerung
  • Operative Analytik
  • Echtzeit-Analysen

Besuchen Sie Anwendungsfall-Leitfaden: Wo MongoDB verwendet werden kann, um mehr über jede der oben aufgeführten Anwendungen zu erfahren.

Zusammenfassung

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

Machen Sie erste Schritte mit Dokumentdatenbanken, indem Sie eine Datenbank in MongoDB Atlas, der Entwickler-Datenplattform von MongoDB, erstellen. Atlas bietet eine dauerhaft kostenlose Stufe, mit der Sie großzügig experimentieren und das Dokumentenmodell erkunden können.

Probieren Sie die Leistungsfähigkeit von Dokumenten kostenlos mit unseren Beispieldaten in MongoDB Atlas aus.

FAQ

Wozu sind Dokumentendatenbanken gut?

Dokumentendatenbanken sind allgemeine Datenbanken, die in einer Vielzahl von Anwendungsfällen in verschiedenen Branchen eingesetzt werden können. Besuchen Sie Wann NoSQL eingesetzt werden sollte , wenn Sie dazu mehr erfahren möchten.

Ist MongoDB eine Dokumentendatenbank?

Ja, MongoDB ist eine universelle Dokumentendatenbank.

Was ist ein Beispiel für eine Dokumentendatenbank?

MongoDB ist die weltweit beliebteste Dokumentendatenbank. Weitere Beispiele für Dokumentendatenbanken sind CouchDB und Firebase.

Wie funktionieren Dokumentdatenbanken?

Dokumentdatenbanken speichern Informationen in Dokumenten. Dokumentdatenbanken verfügen über umfangreiche APIs und Abfragesprachen, mit denen die CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) ausgeführt werden können. Sie verfügen über flexible Schemata, sodass Entwickler ihre Datenmodelle problemlos weiterentwickeln können, wenn sich die Anwendungsanforderungen ändern.

Wie werden Dokumente in einer Datenbank gespeichert?

Dokumentdatenbanken speichern Informationen in Dokumenten. Jedes Dokument enthält normalerweise Informationen zu einem Objekt und alle zugehörigen Metadaten. Dokumente mit ähnlichem Inhalt werden in Sammlungen gruppiert. Sammlungsgruppen werden in Datenbanken gespeichert.

Welches Feld ist immer das erste Feld in einem Dokument?

In MongoDB heißt das erste Feld in jedem Dokument „id“. Das Feld „id“ dient als eindeutiges Kennzeichen für das Dokument. Siehe die offizielle MongoDB-Dokumentation für mehr dazu.  Beachten Sie, dass jedes Dokumentdatenbankverwaltungssystem seine eigenen Feldanforderungen hat.

Wie werden MongoDB-Daten gespeichert?

MongoDB speichert Daten in BSON (Binär-JSON)-Dokumenten.

Ist MongoDB kostenlos?

Ja, MongoDB hat zwei kostenlose Optionen:

Dokumentendatenbanken von relationale Datenbanken?

Der offensichtlichste Unterschied zwischen einer Dokumentendatenbank und einer relationalen Datenbank ist die Art und Weise, wie Daten modelliert werden. Dokumentdatenbanken modellieren Daten typischerweise mit flexiblen, JSON-ähnlichen Dokumenten, die Feld-Wert-Paare enthalten. Relationale Datenbanken modellieren Daten eher mithilfe starrer Tabellen mit festen Zeilen und Spalten.