Dokumentenorientierte Datenbanken – eine Einführung
Document-Datenbanken sind aufgrund ihrer Flexibilität und Skalierbarkeit eine beliebte Wahl für Entwickler. In unserer Einführung stellen wir Ihnen die Alternative zu relationalen Datenbanken vor und zeigen Ihnen die vielfältigen Anwendungsmöglichkeiten.
Entwicklung von Datenbanken
Lange Zeit dominierten relationale Datenbanken die Datenbanklandschaft, die Daten in Tabellen mit Zeilen organisieren. In den letzten Jahren sind jedoch verschiedene Datenbanktypen aufgetaucht, die sich von der starren Struktur des relationalen Modells lösen. Diese neuen Datenbankmodelle werden gemeinsam als NoSQL-Datenbanken bezeichnet, da sie in der Regel keine strukturierte Abfragesprache verwenden, wie sie in relationalen Datenbanken typischerweise zur Verwaltung und Abfrage von Daten verwendet wird.
NoSQL-Datenbanken bieten ein hohes Maß an Skalierbarkeit sowie Flexibilität in Bezug auf die Datenstruktur. Diese Merkmale machen NoSQL-Datenbanken nützlich für die Bewältigung großer Datenmengen und für schnelle, agile Entwicklung.
Wichtige Konzepte von Dokumentdatenbanken
Im Folgenden erläutern wir Ihnen die wichtigsten Konzepte im Zusammenhang mit Dokumentdatenbanken sowie die Vorteile ihrer Verwendung. In unseren Beispielen beziehen wir uns auf MongoDB, eine weit verbreitete dokumentspezifische Datenbank. Die hervorgehobenen Konzepte sind jedoch auch auf die meisten anderen Dokumentdatenbanken anwendbar.
Was ist eine Dokumentdatenbank?
Dokumentenorientierte Datenbanken speichern Daten als Dokumente. Ein solches Dokument kann man sich als eigenständigen Datensatz vorstellen, der alles enthält, was benötigt wird, um seine Bedeutung zu verstehen – ähnlich wie Dokumente, die in der realen Welt verwendet werden.
{
"_id": "annameier",
"firstName": "anna",
"lastName": "meier",
"email": "anna.meier@centron.de",
"department": "Development"
}
Beachten Sie, dass das Dokument als JSON-Objekt geschrieben ist. JSON ist ein menschenlesbares Datenformat, das in den letzten Jahren sehr populär geworden ist. Während verschiedene Formate zur Darstellung von Daten in einer Dokumentdatenbank verwendet werden können, wie XML oder YAML, ist JSON eine der häufigsten Wahlmöglichkeiten. MongoDB hat beispielsweise JSON als das primäre Datenformat zur Definition und Verwaltung von Daten übernommen.
Alle Daten in JSON-Dokumenten werden als Feld-Wert-Paare dargestellt, die die Form Feld: Wert haben. Im vorherigen Beispiel zeigt die erste Zeile ein Feld _id mit dem Wert annameier. Das Beispiel enthält auch Felder für den Vornamen und Nachnamen der Mitarbeiterin, ihre E-Mail-Adresse sowie die Abteilung, in der sie arbeitet.
{
"_id": "tobiasweber",
"firstName": "Tobias",
"middleName": "Andreas",
"lastName": "Weber",
"email": "tobias.weber@centron.de",
"department": ["Development", "Sales"]
}
In Dokumentdatenbanken sind Dokumente nicht nur selbstbeschreibend, sondern ihr Schema ist auch dynamisch. Das bedeutet, dass Sie es nicht vordefinieren müssen, bevor Sie Daten speichern. Felder können zwischen verschiedenen Dokumenten in derselben Datenbank variieren, und Sie können die Struktur des Dokuments nach Belieben ändern, Felder hinzufügen oder entfernen. Dokumente können auch verschachtelt sein, d.h., ein Feld in einem Dokument kann einen Wert in Form eines anderen Dokuments haben, was es ermöglicht, komplexe Daten in einem einzigen Dokument zu speichern.
{
"_id": "tobiasweber",
"firstName": "Tobias",
"middleName": "Andreas",
"lastName": "Weber",
"email": "tobias.weber@centron.de",
"department": ["Development", "Sales"],
"socialMediaAccounts": [
{
...
}
]
}
Dies zeigt die Flexibilität und Anpassungsfähigkeit von Dokumentendatenbanken für den Umgang mit komplexen und vielfältigen Datenstrukturen.
{
"_id": "tobiasweber",
"firstName": "Tobias",
"middleName": "Andreas",
"lastName": "Weber",
"email": "tobias.weber@centron.de",
"department": ["Development", "Sales"],
"socialMediaAccounts": [
{
// Hier könnten Details zu den einzelnen Social-Media-Accounts stehen.
}
]
}
Vergleich zu relationalen Datenbanken
In einer relationalen Datenbank könnten Sie diese beiden Beispielkontaktkarten nicht in derselben Tabelle speichern, da sie sich in ihrer Struktur unterscheiden. Sie müssten das Datenbankschema anpassen, um sowohl das Speichern von mehreren Abteilungen als auch von zweiten Vornamen zu ermöglichen, und Sie müssten einen zweiten Vornamen für Anna hinzufügen oder die Spalte für diese Zeile mit einem NULL-Wert füllen. Dies ist bei Dokumentdatenbanken nicht der Fall, die Ihnen die Freiheit bieten, verschiedene Dokumente mit unterschiedlichen Schemata ohne Änderungen an der Datenbank selbst zu speichern.
Dynamisches Schema in Dokumentdatenbanken
In Dokumentdatenbanken sind Dokumente nicht nur selbstbeschreibend, sondern ihr Schema ist auch dynamisch. Das bedeutet, dass Sie es nicht vordefinieren müssen, bevor Sie Daten speichern. Felder können zwischen verschiedenen Dokumenten in derselben Datenbank variieren, und Sie können die Struktur des Dokuments nach Belieben ändern, Felder hinzufügen oder entfernen. Dokumente können auch verschachtelt sein, d.h., ein Feld in einem Dokument kann einen Wert in Form eines anderen Dokuments haben, was es ermöglicht, komplexe Daten in einem einzigen Dokument zu speichern.
Die Vielseitigkeit von Dokumentdatenbanken
Nehmen wir an, die Kontaktkarte muss Informationen über die vom Mitarbeiter verwendeten Social-Media-Konten speichern und sie als verschachtelte Objekte in das Dokument aufnehmen:
{
"_id": "tobiasweber",
"firstName": "Tobias",
"middleName": "Andreas",
"lastName": "Weber",
"email": "tobias.weber@centron.de",
"department": ["Development", "Sales"],
"socialMediaAccounts": [
{
// Hier könnten Details zu den einzelnen Social-Media-Accounts stehen.
}
]
}
In diesem Beispiel enthält das Feld „socialMediaAccounts“ ein Array von Objekten, die jeweils eine andere Social-Media-Plattform und den entsprechenden Handle repräsentieren. Dies zeigt die Flexibilität und Anpassungsfähigkeit von Dokumentendatenbanken für den Umgang mit komplexen und vielfältigen Datenstrukturen.