Ein Datenbanksystem (DBS) besteht einerseits aus der Datenbasis und andererseits aus dem Datenbankmanagementsystem. Das DBMS übernimmt in diesem System die Aufgaben der Strukturierung und Organisation sowie der Kontrolle aller lesenden und schreibenden Zugriffe. Es verwaltet also die Anfragen, ohne dass die Storage-Medien, auf denen die Datensätze liegen, oder die Nutzer bekannt sein müssen.
Was ist ein Datenbankmanagementsystem?
Beim Datenbankmanagementsystem handelt es sich um eine Software, die dafür konzipiert wurde, auf einem System installiert zu werden. Das DBMS kann sich entweder auf einem Server oder einer Workstation (beispielsweise einem PC) befinden. Mit einer speziellen Datenbanksprache ermöglicht die Software die Speicherung, Abfrage und Administration der Datensätze einer Datenbank.
Eine gängige Datenbanksprache ist SQL (Structured Query Language). Nur mit dem Datenbankmanagementsystem kann eine persistente Datenspeicherung und Datenkonsistenz sichergestellt werden. Das DBMS entscheidet über die Performance sowie die Funktionalität und definiert darüber hinaus das Datenmodell.
Welche Funktionen hat ein Datenbankmanagementsystem?
Das Datenbankmanagementsystem ist die Kernkomponente der Datenbank und ermöglicht das Strukturieren und Speichern aller Datensätze mit dem Ziel, diese Informationen den Anwendern und Anwendungen in einer gewünschten Form zur Verfügung zu stellen. Das DBMS kann analog zu einem Datei-Manager beschrieben werden. Es verwaltet jedoch nicht Dateien in Dateisystemen, sondern Datenbestände im Datenbanksystem.
Das Datenbankmanagementsystem erfüllt dabei die folgenden Funktionen:
- Datensätze werden gespeichert, gelöscht oder überschrieben
- Metadaten der Datenbank werden verwaltet
- Datensätze werden gemäß des Datenmodells organisiert
- Datentypen und Attribute werden definiert
- Datenbankoperationen für den Zugriff und die Suche werden bereitgestellt
- Datensicherheit und -schutz werden gewährleistet
- Datenintegrität wird sichergestellt
- Kommunikationsschnittstellen werden für den Mehrnutzerzugriff bereitgestellt
- Es erfolgt eine Optimierung für Zugriffe und Abfragen
- Reports und Kennzahlen des DBMS werden bereitgestellt
Welche Komponenten hat ein Datenbankmanagementsystem?
Jedes Datenbankmanagementsystem besteht aus verschiedenen Komponenten, die dafür genutzt werden, die oben genannten Funktionen bestmöglich zu erfüllen. Anwendern und Anwendungen wird es ermöglicht, über Schnittstellen auf die Datenbasis zuzugreifen. Für den Zugriff ist meist die Kenntnis einer Datenbanksprache wie SQL erforderlich.
Somit ergeben sich folgende Komponenten eines Datenbankmanagementsystems:
- Datendefinitionssprache
- Datenmanipulationssprache
- Datenwörterbuch
Die Struktur der Datenbank wird von der Datendefinitionssprache (Data Definition Language (DDL)) festgelegt. Sie dient der Generierung, Bearbeitung und Löschung aller Objekte innerhalb des Datenbanksystems. Zu diesen Objekten zählen Benutzerrechte, Indizes, Referenzen oder auch Relationen.
Die Datenmanipulationssprache (Data Manipulation Language (DML)) wird genutzt, um die Datensätze zu bearbeiten. Mit Hilfe der DML werden die Datensätze zunächst angelegt und später sinnvoll verändert oder eingefügt aber auch ausgelesen und schließlich gelöscht. Das Datenwörterbuch wird benötigt, um alle Informationen über die Datenbasis, die sich in der Datenbank befindet, zu speichern. Diese „Daten über die Daten“ werden auch Metadaten genannt. Die Metadaten ermöglichen Rückschlüsse über die inhaltliche Relevanz der Datensätze und die Gesamtheit aller Datensätze.
Welche Datenmodelle eines Datenbankmanagementsystems gibt es?
Es ist sehr wichtig, ein Datenmodell zu bestimmen, denn dies definiert, wie die Datensätze in den Datenbanken strukturiert werden und in welchen Beziehungen die Datensätze zueinander stehen. Ist die Entscheidung für ein bestimmtes DBMS gefallen, ist damit auch gleichzeitig das Datenmodell festgelegt.
Das Management kann zwischen verschiedenen Datenbankmanagementsystemen und den entsprechenden Datenmodellen wählen. Sehr häufig wird das relationale Datenmodell präferiert. In diesem Modell erfolgt die Verwaltung der Daten in Tabellen, wobei zeilenweise vorgegangen wird. Auf diese Weise ist es möglich, verschiedenste Beziehungen (Relationen) zwischen den Datensätzen abzubilden und dann durch Werte in den Tabellenspalten darzustellen.
Bei einem hierarchischen Datenmodell ist die Vorgehensweise eine andere. Daten können in einem solchen Modell nur in abhängigen, hierarchischen (Eltern-Kind) Beziehungen zueinander stehen. Einen dritten Weg beschreiten die netzwerkartigen Datenbankmodelle. Wie der Name vermuten lässt, werden die Datensätze in einem solchen Modell in einem Netzwerk organisiert.
Wird ein objektorientiertes Datenmodell gewählt, folgt daraus, dass die Eigenschaften und Daten der Objekte von anderen Objekten vererbt werden können. Das Datenbankmanagementsystem hat die Aufgabe, die Beziehungen und auch die Vererbungen der einzelnen Datenobjekte zu verwalten. Eine weitere Alternative sind die dokumentenorientierten Datenbankmodelle wie MongoDB, bei denen die Daten in Form von Dokumenten abgelegt werden. Dabei handelt es sich um nicht-relationale Datenmodelle. Die vorgestellten Modelle werden auch zu Mischformen kombiniert. Überwiegend werden die relationalen Datenbankmanagementsysteme (RDBMS) verwendet. Das beinhaltet außerdem die Nutzung von SQL als Standard Interface.
Sehr verbreitet ist das Datenbankmanagementsystem Microsoft Access, das sich besonders für Einzelrechner und kleinere Server eignet. Andere Systeme sind IBM DB2 sowie Database 12c von Oracle oder auch das Open Source Produkt MySQL. MySQL erfreut sich wachsender Beliebtheit. Es ist das meist gewählte Open Source System und die Basis für viele im Internet angebotene Content-Management-Systeme wie beispielsweise WordPress.
Warum werden zunehmend nicht-relationale Datenbankmanagementsysteme ausgewählt?
Das DBMS MongoDB wird zur ernsthaften Konkurrenz der Open Source Lösung MySQL. Vorteile wie die einfache Skalierbarkeit, eine hohe Flexibilität sowie die Dokumentenorientierung überzeugen immer mehr Unternehmen, MongoDB einzusetzen. Es ist jedoch vorwiegend das generelle Hinterfragen des Konzepts relationaler Datenbanken, dass die Anwender zu einem nicht-relationalen System greifen lässt. Diese neuen Systeme sind ebenfalls als Open Source Lösung verfügbar und finden auch deshalb immer mehr Befürworter.
Wie oben bereits festgestellt wurde, bestimmt die Festlegung der Datendefinitionssprache die Struktur der Datenbank. Bei den nicht-relationalen Systemen kommt entsprechend nicht SQL, sondern NoSQL zum Einsatz. Dieser Begriff bedeutet nicht, dass gar kein SQL verwendet wird. Es werden vielmehr noch weitere ergänzende Elemente eingesetzt, um die Schwachstellen relationaler Modelle zu beseitigen. Ziel war, Probleme klassischer Datenbanken im Hinblick auf Skalierbarkeit und Flexibilität zu beseitigen. In den klassischen Datenbanken werden die Datensätze in einem relativ starren, stark strukturierten Modell gespeichert. Erweiterungen und Veränderungen sind somit nur sehr schwer umsetzbar.
Die Vorteile eines nicht-relationalen Datenmodells
Die Entwicklung innovativen Systeme wie auch Business Analytics Tools wurde von der wachsenden Datenflut begünstigt. Es strömen immer mehr und dabei auch immer mehr unstrukturierte Informationen auf die Unternehmen ein. Durch Sensordaten, Cloud-Computing, Soziale Netzwerke oder das Internet of Things werden immer mehr Datensätze generiert, die sich nicht einfach und schon gar nicht starr strukturieren lassen. Datenbanken müssen deshalb steigende Anforderungen im Hinblick auf den Datendurchsatz und auch die Skalierbarkeit erfüllen. Relationale Datenbankensysteme geraten hierbei schnell an Grenzen.
Was zeichnet MongoDB besonders aus?
MongoDB gehört neben Apache Cassandra, CouchDB und Redis zu den innovativen nicht-relationalen Datenbanksystemen. Entwickelt wurde das System vom amerikanischen Startup 10gen. Seit 2009 ist es als Open Source Lösung verfügbar und wurde bei den renommierten, amerikanischen „Bossie Awards“ prämiert. Im Fokus von MongoDB steht die Möglichkeit, riesige Datenmengen mit hoher Performance, Flexibilität und Skalierbarkeit zu verarbeiten.
Der wesentliche Unterschied zu den relationalen Datenbanksystemen besteht darin, dass MongoDB die Datensätze in Form von Dokumenten und nicht in Form von Tabellen abspeichert. Damit wird eine schemafreie Struktur bevorzugt. Ohne das feste Tabellenschema muss es auch keine Relationstabellen geben. Auch auf „Joins“ kann verzichtet werden, die den entscheidenden Nachteil haben, dass sie bei einer notwendigen Erweiterung der Datenbanken immer komplizierter werden. Die Relationen werden bei MongoDB direkt im Datensatz gespeichert. Sie können auch erst bei Bedarf, also bei der Datenabfrage, erstellt werden. Resultat ist eine flexiblere Datenstruktur und eine einfache horizontale Skalierbarkeit.
Worin unterscheidet sich MongoDB von MySQL?
An die Stelle der Tabellen relationaler Systeme rücken bei MongoDB die sogenannten Kollektionen (Collections). In jeder Kollektion können Dokumente im BSON-Format abgespeichert werden. Diese sind analog zu den Zeilen oder Datensätzen einer MySQL-Datenbank zu sehen. Die Anzahl der Felder jedes Dokuments ist beliebig und auch eine verschachtelte Array-Struktur ist möglich. Es ist außerdem möglich, innerhalb eines Dokuments andere Dokumente zu speichern.
Was sind die Gemeinsamkeiten von MongoDB und MySQL?
Beide Lösungen verwenden als Primärschlüssel pro Datensatz eine eindeutige ID. Es können select-relevante Spalten zur Erhöhung der Abfrage-Performance indiziert werden. Aufgrund dieser Gemeinsamkeiten ist ein Umstieg von MySQL auf MongoDB relativ einfach möglich. Auf eine Datenabfragesprache wie SQL wird komplett verzichtet. Stattdessen stehen objektspezifische Methoden für alle gängigen Programmiersprachen zur Verfügung, mit denen die Datenabfrage und die Datenmanipulation erfolgen können.
Video: 02. Datenbanken – Grundbegriffe (Datenbanksystem, DBMS)
Welches sind die wesentlichen Vorteile von MongoDB?
Das objektorientierte Datenmodell ist für die gängigen Programmiersprachen geeigneter. Es gibt mittlerweile viele Lösungen, bei denen die Datensätze einer relationalen Datenbank in Objekten abgebildet werden. Es ist leichter, diese Objekte dann in einem Programmcode zu verarbeiten. Des Weiteren werden sämtliche JavaScript-Datentypen unterstützt. MongoDB überzeugt außerdem mit einem großen Funktionsumfang, zu dem neben der Datenverwaltung und Zugriffskontrolle auch die Orchestrierung von Diensten wie Messaging oder Authentifizierung gehören.
Einen weiteren Vorteil bieten die vorgefertigten Integrationsfunktionen, mit denen beispielsweise die Angebote von Google, Facebook, Slack, AWS und Twilio wahrgenommen werden können. Darüber hinaus werden mit einem HTTTP-Service Coud-Dienste und Microservices eingebunden. Auch das Verknüpfen mehrerer Services ist möglich. MongoDB kann auf fast allen Linux-, Windows- oder Mac-Systemen eingesetzt werden.
Welches Datenbankmanagementsystem ist zukunftsfähig?
Jahrzehntelang wurden unumstritten die relationalen Datenbanksysteme favorisiert. Aus diesem Grund ist MySQL auch immer noch die Grundlage für viele Webanwendungen. Ein exponentiell steigendes Datenvolumen, vielfältige Datenquellen und neue Anforderungen der Webprojekte verlangen jedoch nach anderen, nicht-relationalen Lösungen.
Datenbanksysteme wie MongoDB sind verteilte Datenspeichersysteme. Diese arbeiten dokumentenorientiert und werden auch als NoSQL-Systeme bezeichnet. Mit dem Verzicht auf die Abfragesprache SQL steigen die Anforderungen an die Anwendungsschicht. Auf der anderen Seite ermöglicht jedoch dieser Verzicht, die Abspeicherung des Datenbestands und der Arbeitsprozesse auf mehreren Servern zu verteilen. Das hat wiederum zur Folge, dass diese modernen Datenbankmanagementsysteme unbegrenzt skalierbar sind.
Der entscheidende Vorteil des nicht-relationalen Datenbankmanagementsystems MongoDB liegt jedoch darin, dass die dort verwendeten Dokumente nicht nach einem festen Schema aufgebaut werden. In der entsprechenden MySQL-Tabelle haben alle Zeilen zwingend den gleichen Aufbau.
Jedes einzelne MongoDB-Dokument kann individuell strukturiert sein. Auf diese Weise wird es möglich, die Datenbanksysteme jederzeit zu erweitern und einfach neue Felder mit beliebigen Werten anzulegen. Bei einem relationalen Datenbanksystem müsste zu diesem Zweck die gesamte Struktur verändert werden.
Bei MongoDB muss jeder Schlüssel zwar einzigartig sein, aber nur innerhalb eines Dokuments. Der Schlüssel kann also in beliebig vielen anderen Dokumenten ebenfalls verwendet werden. Hier haben die MySQL-Datenbanken Grenzen. Es müssen umständlich Relationen (Joins) zwischen den Tabellen hergestellt werden. Diese werden bei MongoDB relativ einfach durch die Einbettung von Dokumenten oder Referenzen erzeugt.
Auch im Hinblick auf die Datenabfrage bietet MongoDB Vorteile. Durch den Verzicht auf die Abfragesprache SQL muss die Datenverarbeitung durch eine eigene Sprache unterstützt werden. Das ermöglicht wiederum die problemlose Kommunikation zwischen MongoDB und jedem Client mit Hilfe der objektspezifischen Methoden der Programmiersprache der jeweiligen Anwendung. Dafür stehen die Libraries und Driver zur Verfügung, die der User auf der Homepage herunterladen kann. Wenn sehr komplexe Abfragen anstehen, kann darüber hinaus das Map-Reduce-Verfahren angewendet werden.
In welchen Einsatzszenarien ist MongoDB überlegen?
Bei der Umsetzung von weborientierten Projekten, bei denen die Datenmengen sehr groß und zudem unstrukturiert sind, punktet MongoDB. Dank des dokumentenbasierten Arbeitens und des Verzichts auf ein Schema ist es möglich, die unterschiedlichsten Datentypen zu speichern und performant zu verarbeiten. Die nahezu unbegrenzte horizontale Skalierbarkeit ist bei derartigen Projekten ebenfalls von Vorteil. Es ist außerdem problemlos möglich, Kopien des Datenbestands zu erstellen und auf verschiedenen Servern abzulegen. Weitere Stärken entfaltet dieses nicht-relationale Datenbankmanagementsystem bei der Zusammenfassung von Datensätzen unterschiedlicher Quellsysteme.
MongoDB ist vorteilhaft bei Projekten, die folgende Anforderungen aufweisen:
- Stark wachsend, sodass die Skalierbarkeit wichtig ist
- dauerhafte Verfügbarkeit gefordert, sodass selbst beim Serverausfall die Anwendung verfügbar ist
- dynamisch, sodass eine flexible Anpassung gegeben sein muss
Die Verteilung des Datenbanksystems auf mehrere Server bietet einen weiteren, entscheidenden Vorteil: Nach der Datenspeicherung kann ein kurzes Zeitfenster genutzt werden, in welchem die Lesezugriffe ausschließlich den alten Datenbestand erhalten. Diese Besonderheit wird auch als „Eventual Consistency“ bezeichnet. Der Vorteil dieses Konsistenzmodells besteht darin, dass auch die Server, die vom Datenbank-Cluster getrennt sind (beispielsweise durch Netzwerkpartitionen) den Anwendungen Schreibzugriffe erlauben. Im Gegensatz dazu bietet MySQL viele bewährte Administrations-Tools und Entwicklerdokumentationen.
Wenn das Management eines Unternehmens sich für ein konkretes Datenbankmanagementsystem entscheiden muss, ist nicht immer trennscharf festlegbar, welches priorisiert werden sollte. Es ist jedoch auch möglich, für ein spezifisches Anforderungsprofil eine Kombination zu wählen und perfekt auf das Unternehmen abzustimmen.
Bildnachweis:© Shutterstock – Titelbild: Elnur – #01:Wright Studio – #02: GarryKillian2 – #03: GarryKillian2 – #04: MongoDB