Moderne Datenbanken sind das Herzstück agiler IT-Infrastrukturen
Im Cloud-Zeitalter müssen Datenbanken agil, automatisierbar und flexibel skalierbar sein. Diese Anforderungen sind sehr gut mit NoSQL-Datenbanken zu erfüllen.
Der stabile Trend zu Cloud-Services, Echtzeit-Analytik, Machine Learning und Künstlicher Intelligenz führt nicht nur zu explodierenden Datenaufkommen. Er bedeutet parallel auch eine massive Zunahme an unstrukturierten Daten wie Fotos, Videos oder Textnachrichten. Das hat die Ansprüche und Anforderungen an Datenbanken drastisch verändert: Agilität, Flexibilität und Skalierbarkeit sind zunehmend geforderte Kernqualitäten, die von transaktionsorientierten, relationalen SQL-Datenbanken aufgrund ihrer starren Tabellenstrukturen und ihrer Skalierungsgrenzen prinzipbedingt nicht bereitgestellt werden können.
Die Vorteile von NoSQL
NoSQL-Datenbanken sind diese Beschränkungen fremd. Anders als herkömmliche SQL-Datenbanken arbeiten sie nicht mit einem starren Zeilen-Spalten-Schema, sondern mit flexiblen Datenmodellen wie dokumentenorientiert, Key-Value oder sogar Multi-Modal mit einem Mix aus mehreren Modellen für eine möglichst breite Einsatzpalette. Durch diese Flexibilität können sie praktisch alle Datenformate speichern und verarbeiten, egal ob strukturiert, semi- oder unstrukturiert, und zugleich theoretisch unbegrenzt skalieren. Durch die lineare Skalierung steigt die Performance des gesamten NoSQL-Datenbankmanagement-Systems mit jedem zusätzlichen Server. Teure Investitionen in dedizierte zentrale Server- und Storage-Ressourcen, wie sie bei SQL-Datenbanken zwangsläufig anfallen, sind dafür nicht notwendig. Die feingranulare Organisation von Nodes und Clustern erlaubt zudem nicht nur die Skalierung nach oben beziehungsweise außen, sondern auch nach unten beziehungsweise innen.
Die Datenbankservices können unabhängig voneinander vertikal wie horizontal skaliert werden. Das vereinfacht die Analyse großer Datenmengen durch Fast Operational Data Analytics und beschleunigt so die Entscheidungsfindung. NoSQL-Datenbanken, die die Fähigkeit zur multidimensionalen Skalierung besitzen, können ihre Services auf dedizierten Servern laufen lassen und so Workload Isolation hinsichtlich CPU, RAM und Disk-Arbeitslast erzielen. Ein integrierter Eventing Service kann automatisierte Reaktionen auf definierte Ereignisse auslösen, wenn ein bestimmter Trigger ausgelöst wird, etwa eine Nachricht absetzen oder einen Alarm auslösen. Über das Alerting hinaus können aber auch Anschlussaktionen definiert werden, wie etwa das Versenden einer E-Mail an eine definierte Personengruppe oder automatische Preisänderungen in einem Online-Shop.
NoSQL und SQL im gemischten Betrieb
Eine reine NoSQL-Datenbankarchitektur ist höchst selten. In der Regel existiert in den Unternehmen bereits eine Reihe von Legacy-Systemen, die auf SQL-Datenbanken zugreifen, wie etwa Inhouse-Applikationen für ERP, HR oder Produktionssteuerung. Das erfordert gemischte Architekturen, bei denen sowohl SQL- als auch NoSQL-Datenbanken verwendet werden. Deshalb ist die problemlose Anbindung von NoSQL-Datenbanken an die Legacy-Umgebung ein wichtiges Kriterium.
Mit N1QL (SQL für JSON) gibt es eine exklusive, SQL-kompatible Abfragesprache für dokumentenorientierte Datenmodelle wie JSON. N1QL erweitert die herkömmliche Verarbeitung von Tabellen und Zeilen um den Zugriff auf verschachtelte Dokumente per SQL-Befehlen. Die Migration von SQL auf NoSQL wird dadurch vereinfacht, da die Datenzugriffsschicht nicht neu geschrieben werden muss. Datenbankentwickler:innen können so ihre SQL-Expertise auch für NoSQL-Datenbanken nutzen. Dadurch wird der Aufwand für Schulung und Trainings bei der Implementierung von NoSQL enorm reduziert.
Dynamische Microservices
NoSQL-Datenbanken sind eine cloud-native Entwicklung und besitzen daher eine hohe Cloud-Affinität. Bei der Entwicklung von Datenbankanwendungen profitieren sie von der Nähe zu Cloud- und Open-Source-Technologien. Für dynamische Microservices-Architekturen wie Kubernetes sind NoSQL-Datenbanken deshalb gesetzt. Sie sind geeignet, die Pods in einem Kubernetes-Cluster mit den gerade benötigten Datenbank-Ressourcen zu versorgen. Microservices sind auf einen hohen Automatisierungsgrad ausgelegt und benötigen aufgrund des temporären und volatilen Charakters der Arbeitsprozesse flüchtige (stateless) Datenbank-Services. Die Pods in einem Microservices-Cluster sind nur für eine bestimmte Zeit aktiv und werden danach, geplant oder ungeplant, beendet. Jedem Pod wird dabei aus dem bereitstehenden Persistent-Volume eine Stateful-Komponente zur Verfügung gestellt. Dessen Zuordnung, Inhalt, Verhalten und Laufzeit wird dabei ebenso verwaltet wie das Zusammenspiel mit den anderen Pods innerhalb eines Kubernetes-Clusters.
Ein wichtiges Funktionsmerkmal ist das automatisierte, intelligente Echtzeit-Management der Service-Logik in den Pods wie Key Value, Indizierung, Queries, Analytics, Eventing oder Full-Text-Search. Die dafür benötigten Datenbank-Ressourcen werden zur Laufzeit zur Verfügung gestellt. Neben der Automatisierung einzelner Pods übernimmt die Managementschicht der NoSQL-Datenbank idealerweise auch die Steuerung und Kontrolle der vorhandenen und benötigten Datenbank-Volumes sowie der Services.
Microservices können auf einer Reihe von Cloud-Plattformen bereitgestellt werden. Dazu zählen unter anderem AWS EKS, Azure AKS, Google GKE oder Red Hat OpenShift. Um die Interoperabilität sicherzustellen, müssen Microservices unabhängig von der jeweils genutzten Plattform funktionsfähig sein. Das betrifft auch die von der NoSQL-Datenbank bereitgestellten automatisierten Services. Neben der Unterstützung der diversen Cloud-Plattformen durch die NoSQL-Datenbank kann die Kompatibilität auch durch die Nutzung von Open-Source-Plattform Kubernetes sichergestellt werden.
Automatisierung und Reifegrade
NoSQL-Datenbanken sind in ihren Funktionsumfängen sehr verschieden ausgeprägt und unterscheiden vor allem hinsichtlich ihrer Fähigkeit zur Automatisierung von Prozessen. Transparent wird das durch die Ausprägung der Reifegrade, die von der Cloud Native Computing Foundation (CNCF) in fünf Stufen (Maturity-Level) definiert werden. Sie reichen von Level 1 mit Basisfunktionalitäten wie automatisiertem App-Provisioning und Konfigurationsmanagement bis zu Level 5 (Full Automation). Zu dieser höchsten Stufe, die aktuell nur ein einziger Anbieter umgesetzt hat, gehören unter anderem Funktionen wie Auto Failover, Automated Availability, Automated Provisioning, Automated Update, Centralized Management, On-demand Dynamic Scaling, Failure Recovery und Cross Datacenter Replication (XDCR) bis hin zu Auto Scheduling und Auto-Scaling (vertikal- und horizontal).
Operative Vorzüge und positive Kostenaspekte
Neben den technologischen Vorteilen spricht auch eine Reihe von betrieblichen Betrachtungen für den Einsatz von NoSQL-Datenbanken. In erster Linie sorgen die vielen Automatisierungsfunktionen für eine erhebliche Entlastung der IT-Abteilungen. Auch die einfache Administration und Bedienbarkeit ist eine große Erleichterung für Unternehmen. Wenn als Cloud-Service eingesetzt, erfordern sie im Gegensatz zu Inhouse-Installationen auch keine aufwändigen Investitionen in die eigene Infrastruktur. Aber auch im Inhouse-Betrieb eingesetzt sind die Ansprüche an die genutzten Server- und Storage-Systeme vergleichsweise gering, lediglich die Netzwerkkapazitäten müssen entsprechend dimensioniert sein.
Bei dem Bereitstellungsmodell Database-as-a-Service (DBaaS) übernimmt der jeweilige Hersteller oder Provider Konfiguration, Betrieb, Management und Wartung. Als Cloud-Service mit PaaS- (Platform as a Service) und SaaS-Diensten (Software as a Service) werden auch die komplexen und teuren Provisioning-Modelle überflüssig, die SQL-Datenbanken zur Skalierung für die Abarbeitung von Lastspitzen benötigen. Dadurch entfällt die Notwendigkeit, Datenbanken für die horizontale Skalierbarkeit überdimensionieren zu müssen.
Aus modernen IT-Infrastrukturen sind NoSQL-Datenbanken nicht mehr wegzudenken. Sie besitzen die für das Datenmanagement geforderte Agilität und Cloud-Affinität ebenso wie die dafür notwendigen Automatisierungsoptionen und Bereitstellungsmodelle.