Datenbanken haben es wahrlich nicht leicht. Wohin auch immer sich IT-Konzepte, Applikations-Entwicklung und Einsatzszenarien weiterentwickeln, immer steht mindestens eine Datenbank im Zentrum.
Kein Wunder, ist sie doch quasi die Drehscheibe, die alle Anwendungen mit den gerade benötigten Daten versorgt. Für die damit verbundenen, höchst anspruchsvollen Aufgaben muss sie über ganz besondere Qualitäten verfügen. Der aktuelle Software- und Applikations-Trend ist geprägt durch die wachsende Beliebtheit von Containern und Microservices in hybriden Multi-Cloud-Strukturen. Das verändert auch die Voraussetzungen und Anforderungen, die an dafür geeignete Datenbanken gestellt werden. Neben Schnelligkeit, Agilität, Flexibilität und Performance sind das vor allem eine hochentwickelte horizontale und vertikale Skalierbarkeit während des Betriebs sowie die optionale Bereitstellung als Managed Service.
Multi-Cloud und Cloud Databases
Cloud Computing hat viele Facetten. Oft beginnt es ganz profan als bestechend einfache Lösung für das Skalierungsproblem, das interne Rechenzentren prinzipbedingt haben. Statt Lastspitzen mit überdimensionierten, nur selten benötigen Zusatzressourcen abzufangen, wird dafür die Cloud als Puffer genutzt. Aus diesen bescheidenen Anfängen haben sich hochkomplexe Hybrid- und Multi-Cloud-Szenarien entwickelt. Anwender können sich aus den Services der diversen Cloud-Provider die besten Stücke heraussuchen – und so gleichzeitig Herstellerabhängigkeiten vermeiden. Das setzt allerdings voraus, dass die Datenbank das mitmacht.
Erste Voraussetzung ist die Cloud-Agnostik, sie muss also potenziell mit allen Hyperscaler-Angeboten kompatibel sein. Auf der Anforderungsliste ganz oben stehen dabei verteilte Datenhaltung, praxisgerechte Performance, flexibles Datenmodell, multidimensionale Skalierbarkeit, Cluster-Unabhängigkeit und asynchrone Replikationsfähigkeit. Weitere Funktions- und Qualitätskriterien sind eine große Zahl von Konnektoren, Managed Cache für das Memory-to-Memory-Streaming, die Kompatibilität mit Datenbank-Standards wie SQL sowie flexible Bereitstellungsmodelle von On-Premises über Cloud bis Database-as-a-Service (DBaaS).
Latenzen und Edge Computing
Bei verteilten Architektur-Modellen wie Cloud Computing, und erst recht bei Multi-Cloud-Szenarien, sind Latenzen ein gefürchtetes Phänomen. Dabei geht es nicht nur um die Verbindung der Datenbank-Cluster mit den zentralen Cloud-Ressourcen, sondern auch untereinander. In Multi-Cloud-Szenarien müssen die Datenbank-Nodes unabhängig voneinander in den verschiedensten Cloud-Clustern funktionsfähig sein. Und das auch dann, wenn die Verbindung zwischen ihnen ausfallen sollte. Möglich wird dies, wenn die Datenbank über eine sogenannte Cross Datacenter Replication (XDCR) verfügt. Über asynchrone Replikationsprotokolle werden dabei auch bei schwankenden Latenzen hohe Replikationsgeschwindigkeiten erzielt.
Für viele latenzkritische oder gar Echtzeit-Anwendungen im Umfeld von Internet-of-Things (IoT) und Industrial-Internet-of-Things (IIoT) wie etwa die vorausschauende Wartung (Predictive Maintenance) oder autonomer Logistikverkehr reicht dies trotzdem nicht aus. Hier kommt Edge Computing ins Spiel, das wiederum eine dafür geeignete Datenbank-Architektur benötigt. Sie besteht im Prinzip aus einer zentralen Vollformat-Datenbank und vielen funktional abgespeckten Embedded-Datenbanken vor Ort.
Sie müssen zwar weder hochperformant noch hochskalierbar sein, sich aber schnell an wandelnde Anforderungen anpassen. Flexibilität ist hier Trumpf, insbesondere beim Datenmodell. Die festen Tabellenstrukturen und Zeilen-Spalten-Schema relationaler SQL-Datenbanken sind dafür kaum geeignet. Ein weiterer Vorteil von NoSQL-Datenbanken im Edge-Kontext sind eigene Analytics-Funktionen für das Data Processing. Das minimiert sowohl die Latenzzeiten als auch den Datenverkehr zwischen zentraler und peripherer Datenbank.
KI und Serverless Computing
Für die Entwicklung von KI-Anwendungen werden zwei Dinge benötigt: Man nehme erstens einen Algorithmus und zweitens einen oder mehrere Datensätze, mit denen eben jener Algorithmus trainiert wird. Die Qualität der Datensätze entscheidet folgerichtig über die Qualität der KI-Anwendung: „Garbage in, Garbage out“. In diesem Umfeld verstärkt sich der Trend weg von relationalen Datenbanken hin zu Multi-Model- und Cloud-Datenbanken, die mit multiplen Datentypen wie Dokumenten oder Grafiken umgehen können. Zusätzlich verstärkt sich der Trend zu Datenbanken, die sowohl Transaktionen als auch Analytics-Funktionen beherrschen und separate Analytics-Lösungen zumindest teilweise überflüssig machen. Umgekehrt können – und werden – Datenbanken zunehmend von KI profitieren. Das betrifft vor allem die Trendtechnologie Serverless Computing bis hin zu hochautomatisierten autonomen Datenbanken.
Bei beiden geht es letztlich um zwei essentielle Punkte: höhere Geschwindigkeit und niedrigere Kosten in der Software-Entwicklung. Serverless Computing beschreibt das Prinzip, Applikationen unabhängig von der Server-Infrastruktur zu schreiben, auf der sie entwickelt und betrieben werden. Die Entwickler müssen sich nicht mehr um die Hardware-Ressourcen kümmern, auf denen ihre Apps laufen sollen. Alle Compute- und Storage-Services werden dabei von Hyperscalern bereitgestellt. Serverless Computing ist per Definition Cloud-native, also spricht viel dafür, auch das Cloud-native NoSQL-Datenmodell dafür zu nutzen.
KI könnte unter anderem dabei helfen, die Datenbank-Ressourcen noch effizienter und kostengünstiger zu nutzen, etwa bei dem, was man in Analogie zu Predictive Maintenance etwa Predictive Wake-up nennen könnte. Bislang können Datenbank für Abfragen nur dann aus dem Idle-Modus geweckt werden, sofern keine Antwortzeiten im Sub-Millisekundenbereich notwendig sind. Mit KI-Unterstützung wäre es möglich, Abfragen besser vorherzusagen und die Datenbank schneller und gezielter zu starten. Das würde sowohl die Kosten für den Betrieb, als auch Stromverbrauch und CO2-Emissionen weiter senken.
Automatisierung und Autonomous Databases
Unabhängig davon ist Automatisierung auch im Datenbank-Umfeld ein Riesenthema. Dafür gibt es gleich ein ganzes Bündel an Triebfedern: die rapide wachsende Aufgabenfülle und Komplexität, das Digitalisierungstempo, den Mangel an Spezialisten und die gleichzeitig geforderte Time-to-market. In dieser Situation wird im Datenbank-Umfeld nicht weniger benötigt als ein Modernisierungs-, Effizienz- und Kostenoptimierungs-Tool – die eierlegende Wollmilchsau, sozusagen. Ein wichtiger Schritt in diese Richtung wird mit autonomen Datenbanken (Autonomous Databases) gemacht. Das Self-Management der Datenbank erfolgt dabei prinzipiell auf drei Ebenen. Die Datenbank übernimmt das Monitoring der laufenden Datenbank-Prozesse und ihrer Umgebung. So wird zum Beispiel automatisch erfasst, wenn ein Node nicht mehr verfügbar ist.
Auf Basis dieser Beobachtung übernimmt sie die Entscheidung über eventuell zu treffende Aktionen: Beispielsweise dann, wenn eine virtuelle Maschine (VM) ausgefallen ist. Im dritten Schritt erfolgt dann die autonome Ausführung dieser Aktionen zur Behebung der Funktionsstörung. Dadurch können Lifecycle-Management- und Deployment-Aufgaben eines Datenbank-Clusters wie Konfiguration, Skalierung, Backup oder Recovery automatisch kontrolliert und gesteuert werden. Daneben haben autonome Datenbanken auch positiven Auswirkungen auf die sinnvolle Auslastung der IT-Ressourcen, die Performance, die Stabilität, die Verfügbarkeit und die Ausfallsicherheit.
Wechselnde Anforderungen
Das Anforderungsprofil für moderne Datenbanken könnte anspruchsvoller kaum sein: Echtzeitverarbeitung statt Latenztoleranz in immer feingranularer verteilten Umgebungen, praktisch unbegrenzte Skalierbarkeit und Hochverfügbarkeit in Hybrid-, Multi-Cloud- und Edge-Szenarien und der Zwang zu immer höheren Automatisierungslevel im Zeichen von Fachkräftemangel, Kosten- und Effizienzdruck. Diese Aufzählung soll jedoch nicht Bangemachen, sondern vor allem eines zeigen: Die Auswahl der richtigen Datenbank ist für die operative Umsetzung strategischer Geschäftsmodelle und Unternehmensziele von entscheidender Bedeutung.
Q & A
Was für Datenbanktypen gibt es?
Es gibt viele verschiedene Arten von Datenbanken, die je nach ihren Merkmalen und Anwendungsfällen in verschiedene Kategorien eingeteilt werden können.
Bevor die heute gängigen relationalen Datenbanksysteme auf den Markt kamen gab es bereits Hierarchische Datenbanken für die Großrechner, B-Bäume und Dateisysteme. PC-Datenbanken wie Access und FoxPro sind weitere Arten von Datenbanken oder Datenverwaltungssystemen, die spezifische Verwendungszwecke und Eigenschaften haben.
Was leisten Hierarchische Datenbanken?
Bei ihnen handelt es sich um eine Art von Datenbankmanagement-System, bei dem Daten in einer hierarchischen Struktur organisiert sind, ähnlich einem Baum. Diese Struktur ist ideal für Anwendungen, bei denen Daten natürlicherweise hierarchisch angeordnet sind, wie in Dateisystemen. IBM’s IMS (Information Management System) ist ein Beispiel für ein hierarchisches Datenbankmanagementsystem.
Was sind die Vorzüge von B-Bäumen?
Diese sind spezielle Datenstrukturen, die in vielen relationalen und NoSQL-Datenbanken verwendet werden, um effiziente Indexierung und schnelles Suchen von Daten zu ermöglichen. Sie sind weit verbreitet in Datenbanken wie PostgreSQL und Oracle.
Sind Dateisysteme auch Datenbanken?
Nein, Dateisysteme sind keine traditionellen Datenbanken, sondern hierarchische Strukturen zur Speicherung von Dateien auf einem Speichermedium. Moderne Betriebssysteme verfügen über Dateisysteme, die Metadaten und Dateizugriffsverwaltung bieten. Obwohl sie keine Datenbanken im engeren Sinne sind, können Dateisysteme verwendet werden, um Daten in Dateien zu speichern, die dann von Datenbankanwendungen referenziert werden.
Und PC-Datenbanken wie Access und FoxPro?
Diese sind Desktop-Datenbankmanagement-Systeme, die auf PCs laufen. Microsoft Access ist eine relationale Datenbankanwendung, die sich gut für kleinere Anwendungen und Projekte eignet. FoxPro war ein relationales Datenbankmanagementsystem, das in den 1990er Jahren weit verbreitet war, aber inzwischen nicht mehr aktiv entwickelt wird.
Mitte der 70ger Jahre begannen die relationalen Datenbanksysteme auf den Markt. Was war anders?
Sie füllten die Lücke aus, die sich zwischen den Großrechnern und den PC-Systemen befand und waren prädestiniert für die Unix-Welt. Das Konzept relationaler Datenbanken wurde von Edgar F. Codd, einem britischen Informatiker, erstmals in einem 1970 veröffentlichten Forschungspapier mit dem Titel „A Relational Model of Data for Large Shared Data Banks” vorgestellt. In diesem bahnbrechenden Papier definierte Codd die Grundlagen für das relationale Datenbankmodell (RDBMS) und legte die theoretischen Grundlagen für relationale Datenbanksysteme fest.
Ein relationales Datenbank Managementsystem (RDBMS) ist ein Datenbanktyp, der die Speicherung und den Zugriff auf miteinander verbundene Datenpunkte ermöglicht. Relationale Datenbanken basieren auf dem relationalen Modell, einer intuitiven und einfachen Art, Daten in Tabellen darzustellen. In einer relationalen Datenbank ist jede Zeile in der Tabelle ein Datensatz mit einer eindeutigen ID, die als Schlüssel bezeichnet wird. Die Spalten der Tabelle enthalten Attribute der Daten, und jeder Datensatz verfügt in der Regel über einen Wert für jedes Attribut, sodass die Beziehungen zwischen Datenpunkten einfach hergestellt werden können.
Welche Sprache wurde bei RDBMS verwendet?
Als Abfragesprache wurde die Structured Query Language (SQL) benutzt.
Welches war die vorherrschenden RDBMS?
Das erste kommerzielle relationale Datenbanksystem war IBM’s System R, das in den späten 1970er Jahren entwickelt wurde und in den 1980er Jahren veröffentlicht wurde. Oracle, gegründet von Larry Ellison, Bob Miner und Ed Oates, brachte sein erstes kommerzielles relationales Datenbanksystem Oracle RDBMS 1979 auf den Markt.
Daneben gab es noch weitere relationale Datenbanksysteme wie Ingres, Informix und Sybase, Interbase und Entire SQL-DB-Server (Software AG). Informix wurde später von der IBM übernommen, die (zu) spät eine Unix-Version ihres DB2-Systems auf den Markt brachte. Sybase wurde von SAP geschluckt und Ingres von ASK Computer Systems Inc, die wiederum von CA gekauft wurden.
Der Entire SQL-DB-Server basierte auf Nixdorfs Unix-Datenbanksystem DDB/4. Die Software AG erwarb seinerzeit die alleinigen Vermarktungsrechte für DDB/4 vom Siemens-Nixdorf Tochterunternehmen SQL Datenbanksysteme GmbH, Berlin.
Interbase wurde im Jahr 1984 von Groton Database Systems entwickelt und von Apollo Computer finanziert.
Der nächste Besitzer von Interbase hieß Ashton-Tate. Im Jahr 1991 erwarb Borland Ashton-Tate und bekam Interbase als Teil des Deals. Borland plante ursprünglich eine Ausgliederung, um die Datenbank als Open Source zu veröffentlichen. Leider wurde keine Zustimmung zu den Bedingungen der Firmenaufsplittung gefunden. Interbase 6 wurde dann zur Open Source Software (aus der Firebird abzweigte) und Borland entwickelte den geschützten Interbase Code weiter.
Die Stärke von Interbase lag in der MVCC (Multiversion Concurrency Control), welches separate Kopien an Daten für jede Transaktion aufbewahrt und somit ein Sperren während der Nutzung vermeidet. Das führt jedoch dazu, dass die Datenbank schnell wächst und damit regelmäßig alte Daten entfernt werden. müssen Während dieser Durchführung wird jede Reihe in jeder Tabelle innerhalb der Datenbank besucht und veraltete Kopien von Daten werden gelöscht.
Was gab es noch für wichtige Datenbanken?
Da sind zunächst Adabas und Progress zu nennen. Adabas wurde in den 1970er Jahren von Software AG entwickelt. Hinsichtlich des Datenmodells ist es ein hierarchisches Datenbankmanagementsystem (DBMS). Es wird oft in Mainframe-Umgebungen eingesetzt und hat eine lange Geschichte in Banken- und Finanzanwendungen. Progress (früher bekannt als Progress OpenEdge) wurde von Progress Software Corporation entwickelt. Es handelt sich um ein relationales Datenbankmanagementsystem (RDBMS) bei dem Daten in Tabellen mit Zeilen und Spalten organisiert sind. Es unterstützt SQL für Abfragen und Datenmanipulation. Generell nahm die Verbreitung relationaler Datenbanken nahm rasch zu, da sie aufgrund ihres Relationenmodells, des deklarativen Abfragesystems, ihrer Datenintegrität und ihrer Fähigkeit, komplexe Beziehungen zwischen Daten zu verwalten, viele Vorteile boten.
Was für Datenbanktypen gibt es heute?
Es gibt mittlerweile eine große Vielfalt für die unterschiedlichsten Einsatzmöglichkeiten. Nachfolgend einige der wichtigsten:
1.- Relationale Datenbanken (RDBMS): Dies sind die am häufigsten verwendeten Datenbanken. Sie verwenden Tabellen, um Daten in Zeilen und Spalten zu speichern und Beziehungen zwischen den Tabellen herzustellen. Bekannte RDBMS sind MySQL, PostgreSQL, Oracle und Microsoft SQL Server.
2. NoSQL-Datenbanken: Diese Datenbanken sind für nicht-relationale Daten geeignet. Sie umfassen verschiedene Typen, darunter:
– Dokumentdatenbanken: Speichern Daten in Dokumenten, die in JSON oder XML formatiert sind. Beispiele sind MongoDB und Couchbase.
– Schlüssel-Wert-Datenbanken: Speichern Daten als Schlüssel-Wert-Paare, wie Redis und Riak.
– Spaltendatenbanken: Speichern Daten in Spalten statt Zeilen, wie Apache Cassandra und HBase.
– Graphdatenbanken: Speichern Daten als Knoten und Kanten, wie Neo4j und Amazon Neptune.
3. In-Memory-Datenbanken: Diese speichern Daten im Arbeitsspeicher, was schnelle Lese- und Schreibzugriffe ermöglicht. Beispiele sind Redis und Memcached.
4. Zeitreihendatenbanken: Optimierte Datenbanken zur Speicherung und Abfrage von zeitbasierten Daten, etwa Sensordaten oder Protokolldaten. Beispiele sind InfluxDB und OpenTSDB.
5. Objektrelationale Datenbanken (ORDBMS): Diese kombinieren Konzepte aus relationalen und objektorientierten Datenbanken, um komplexe Datenmodelle zu unterstützen.
6. NewSQL-Datenbanken: Diese versuchen, die Skalierbarkeit von NoSQL-Datenbanken mit den ACID-Eigenschaften von RDBMS zu kombinieren.
7. Datenbanken für Geodaten: Spezialisieren sich auf die Speicherung und Abfrage von geografischen Informationen, wie PostGIS für PostgreSQL oder MongoDB mit Geodaten-Unterstützung.
8. Cloud-Datenbanken: Datenbanken, die in der Cloud gehostet werden, wie Amazon RDS, Google Cloud SQL und Microsoft Azure SQL Database.
9. Datenbanken für Big Data: Diese Datenbanken sind darauf ausgerichtet, große Mengen strukturierter und unstrukturierter Daten zu verarbeiten und zu analysieren, wie Hadoop HBase und Apache Cassandra.
10. Multimodale Datenbanken: Diese unterstützen verschiedene Datenmodelle, wie Dokumente, Graphen und Tabellen, in einer einzigen Datenbank, um vielseitige Anwendungsfälle abzudecken.
Für welches System soll man sich entscheiden?
Die Wahl des richtigen Datenbanktyps hängt letztendlich von den spezifischen Anforderungen der jeweiligen Anwendung ab, einschließlich Datenstruktur, Skalierbarkeit, Abfrageleistung und Konsistenzanforderungen.
Es gibt Datenbanken nach dem Lizenzmodell und Open Source. Welches ist die richtige Wahl?
Auch hier gilt: Die Auswahl von den spezifischen Anforderungen des jeweiligen Unternehmens ab, einschließlich Leistungsfähigkeit, Verfügbarkeit und Wartung/Responsezeit.
Welche Open-Source Datenbanken gibt es?
Je nach Kategorie gibt es viele unterschiedliche Systeme. Nachfolgend die wichtigsten:
Relationale Datenbanken:
– MySQL: Eine weit verbreitete relationale Datenbank, die ursprünglich von MySQL AB entwickelt wurde und jetzt von Oracle unterstützt wird.
– PostgreSQL: Eine leistungsstarke relationale Datenbank, die für erweiterte Funktionen und die Unterstützung von Erweiterungen bekannt ist.
– MariaDB: Ein Abspaltung von MySQL, die von der Community unterstützt wird und als Open-Source-Alternative dient.
NoSQL-Datenbanken:
– MongoDB: Eine dokumentenorientierte NoSQL-Datenbank, die JSON-ähnliche Dokumente speichert.
– CouchDB: Eine NoSQL-Datenbank, die auf verteilte und skalierbare Dokumentenspeicherung spezialisiert ist.
– Redis: Eine In-Memory-Datenbank, die Schlüssel-Wert-Paare speichert und für schnelle Datenzugriffe optimiert ist.
– Cassandra: Eine spaltenorientierte NoSQL-Datenbank, die für horizontale Skalierbarkeit und hohe Verfügbarkeit entwickelt wurde.
Zeitreihendatenbanken:
– InfluxDB: Eine Datenbank, die sich auf die Speicherung und Abfrage von Zeitreihendaten wie Sensordaten und Protokolldaten spezialisiert hat.
Graphdatenbanken:
– Neo4j: Eine leistungsstarke Graphdatenbank, die zur Speicherung und Abfrage von stark miteinander verbundenen Daten verwendet wird.
Multimodale Datenbanken:
– ArangoDB: Eine Multimodal-Datenbank, die Dokumente, Graphen und Schlüssel-Wert-Daten speichern und verarbeiten kann.
Suchmaschinen:
– Elasticsearch: Eine Such- und Analyse-Engine, die für die Volltextsuche und Analyse großer Datenmengen verwendet wird.
Datenbanken für Geodaten:
– PostGIS: Eine räumliche Erweiterung für PostgreSQL, die geografische Daten speichern und abfragen kann.
Datenbanken für Big Data:
– Hadoop HBase: Eine spaltenorientierte Datenbank, die auf Hadoop basiert und für die Speicherung großer Datenmengen optimiert ist.
– Apache Cassandra: Eine hoch skalierbare, verteilte NoSQL-Datenbank, die für die Verwaltung von großen Datenmengen konzipiert ist.