sommai - Fotolia
Verteiltes SQL: die Datenbankarchitektur der Digitalisierung
Unternehmen benötigen für digitale Geschäftsmodelle Datenbanken, die rasch skalieren und eine hohe Abfrageleistung haben. Verteilte SQL-Datenbanken bieten diese Möglichkeiten.
Das weltweite Datenvolumen wächst. Immer mehr digitale Anwendungen produzieren Daten in großen Mengen. Laut einer Studie des Marktforschungsunternehmens IDC lag die weltweit entstehende Gesamtdatenmenge 2020 bei rund 64 Zettabyte. Bis 2025 soll diese Menge jährlich um 23 Prozent wachsen.
Der Grund für dieses Wachstum ist der Wandel der Arbeitsweise in den Unternehmen. Sie ermitteln immer mehr Daten: aus Kunden- und Warenbewegungen, vernetzten Maschinen und Anlagen, sozialen Medien und vielem mehr. Nicht nur das stetige Anwachsen der Datenmengen, sondern auch die zunehmende Globalisierung stellt Datenbanken vor neue Herausforderungen. Denn Kundinnen und Kunden sind weltweit verteilt und benötigen Datenbanken, die rund um die Uhr Spitzenlasten bewältigen.
Traditionelle relationale Datenbanksysteme sind mit der Speicherung und Weiterverarbeitung dieser Informationsmengen oft überfordert, da sie nie auf eine derartige Skalierbarkeit ausgelegt waren, die in heutigen Anwendungsfällen verlangt wird.
Traditionelle Datenbanken reichen nicht aus
Standard in Unternehmen sind immer noch relationale Datenbankmanagementsysteme (RDBMS), da diese zuverlässig sind sowie eine hohe Konsistenz und Datenintegrität gewährleisten. Das Modell stammt ebenso wie die Datenbankabfragesprache SQL (Structured Query Language) aus den 1970er Jahren. Beide Konzepte sind so stark verknüpft, dass häufig von SQL-Datenbanken die Rede ist, wenn RDBMS gemeint sind.
Herkömmliche SQL-Datenbanken sind an ihre Grenzen gestoßen, weil sie das Wachstum digitaler Unternehmen, die auf Skalierbarkeit angewiesen sind, nicht unterstützen. NoSQL-Datenbanken wurden speziell für solche Situationen immer beliebter, da sie einfacher zu skalieren sind als relationale Systeme. Doch diese Vorteile gehen auf Kosten von Konsistenz und Datenintegrität. Also lautet die Frage: Konsistenz und Datenintegrität ohne Skalierbarkeit oder Konsistenz und Skalierbarkeit?
eiden Welten das Beste
Dieser Gegensatz muss jedoch nicht sein. Verteiltes SQL ist eine neue Generation relationaler Datenbanken, die in einem bisher nicht möglichen Maßstab betrieben werden können – bei gleichzeitiger Wahrung einer hohen Konsistenz und Datenintegrität. Einmal bereitgestellt, besteht diese Datenbank aus vielen Datenbankknoten, die wie ein einziger zusammenarbeiten. Bei Bedarf können Knoten beliebig hinzugefügt werden. Fallen Knoten aus, stellt das kein Problem dar.
Eine verteilte SQL-Datenbank verfügt über mehrere Instanzen, die simultan und unabhängig voneinander arbeiten. Sie erstreckt sich über mehrere Knoten eines Clusters, die man innerhalb eines oder mehrerer Rechenzentren verteilt. Die verteilte Datenbank nutzt dann die physischen Gegebenheiten, um Datenpartitionen passend redundant zu verteilen. Ein Ausfall in einem Rechenzentrum führt nicht zu einem Ausfall oder einer Inkonsistenz der Datenbank. Vielmehr besteht die Möglichkeit, neue Knoten bereitzustellen und die gewünschte Leistungsfähigkeit wieder herzustellen. Das System verteilt automatisch neue und veränderte Daten sowie Abfragen auf diese Instanzen, sorgt für einen Lastausgleich und synchronisiert die Datenbankinhalte.
Dadurch wird ein einzelner Knoten nicht zu einem Flaschenhals – Konsistenz sowie hohe Leistung und Verfügbarkeit sind die Folge. Abfragen wiederum verteilt das System automatisch auf mehrere Knoten, sodass auch hier keine Engpässe entstehen. Es prüft dabei ständig, ob die Daten optimal verteilt sind. Falls sich Nutzerverhalten und Auslastung ändern, kann es die Daten zwischen einzelnen Knoten verschieben und damit die Leistung verbessern.
Ausfallsicherheit und andere Vorteile von verteiltem SQL
Verteiltes SQL nutzt außerdem eine sogenannte Shared-Nothing-Architektur, in der die einzelnen Knoten unabhängig voneinander arbeiten. Somit hat der Ausfall eines Systems keine Auswirkung auf die anderen, die alle Lese- und Schreibzugriffe wie gewohnt weiterbearbeiten. Sobald der Knoten wieder verfügbar ist, sorgt die Datenbank automatisch dafür, dass Änderungen an den Daten auf allen Systemen synchronisiert werden. Durch diese Redundanz ist die Ausfallsicherheit deutlich größer als bei anderen Datenbankarchitekturen. Aus Nutzersicht ist die Datenbank immer verfügbar und gleichzeitig leicht skalierbar.
So benötigen zwar einige Unternehmen zur Erfüllung ihrer Spitzenlastbedingungen (peak traffic conditions) bis zu 100 Datenbankinstanzen, diese Anzahl ist allerdings nur während eines kurzen Zeitraums nötig. Bei verteilten SQL-Datenbanken in der Cloud können Nutzer stundenweise Instanzen hinzufügen und wieder entfernen. Außerdem sind Daten immer gleichmäßig verteilt, zum Beispiel beim Hinzufügen oder Entfernen von Knoten. Durch diesen Ansatz der automatischen Datenverteilung entfällt das individuelle Verwalten der verschiedenen Fragmente.
Ein weiterer Vorteil von verteilten SQL-Datenbanken zeigt sich im IT-Betrieb: Die Systeme bieten alle wichtigen Merkmale des relationalen Modells sowie die gewohnte Standard-Datenbanksprache. Dadurch ist die Einführungsphase eines solchen Systems nur kurz.
Verteiltes SQL in der Unternehmenspraxis
Die Architektur einer verteilten SQL-Datenbank eignet sich für unterschiedliche Branchen, beispielsweise den E-Commerce. Dort kann eine große Rabattaktion oder eine saisonal höhere Nachfrage für einen erheblichen Anstieg des Datenverkehrs in einem Onlineshop sorgen. E-Commerce-Anbieter sollten deshalb bei Aktionstagen wie dem Black Friday oder in der Weihnachtszeit genügend Kapazität bereitstellen, um den Ansturm zu bewältigen.
„Durch verteilte SQL-Datenbanken in der Cloud lassen sich zu Zeiten, in denen die meisten Transaktionen anfallen, beliebig viele Knoten hinzufügen und außerhalb der Stoßzeiten entfernen.“
Simon Anthony, MariaDB
In einigen Branchen gibt es regelmäßige Schwankungen in den Datenbankzugriffen: Lebensmittellieferdienste beispielsweise sind abends stark ausgelastet, wenn viele Menschen ihr Abendessen geliefert haben möchten, während die Auslastung morgens unterdurchschnittlich ist. Durch verteilte SQL-Datenbanken in der Cloud lassen sich zu Zeiten, in denen die meisten Transaktionen anfallen, beliebig viele Knoten hinzufügen und außerhalb der Stoßzeiten entfernen.
Ähnliche Wellenbewegungen kennen auch Streaming-Anbieter. Die meisten Zugriffe gibt es abends und am Wochenende. Da diese Dienste häufig weltweit aktiv sind, bewegt sich die Leistungsspitze den Zeitzonen entsprechend in 24 Stunden durch alle belieferten Regionen, sodass aus globaler Sicht immer Stoßzeit ist. Neben den häufigen Zugriffen in den regionalen Abendstunden gibt es auch starke Wellenbewegungen zum Start neuer Staffeln oder großer Events im Sport oder der Politik.
Auch für Anwendungen im industriellen Internet der Dinge (IIoT) sind Datenbanken mit verteilten SQL-Funktionen von Vorteil. Die Zustandsüberwachung von Maschinen und Anlagen durch Sensoren erzeugt große Datenmengen, sodass lokale Datenspeicherung deutlich effektiver ist. Durch die Verteilung der Datenbank entsteht zugleich ein zentraler Datenspeicher für Analysen, beispielsweise mit maschinellem Lernen.
Diese Beispiele zeigen, dass verteiltes SQL eine flexible Datenbankarchitektur ist, die an alle Anforderungen der digitalen Transformation angepasst ist. Sie eignet sich für viele Branchen und Anwendungsszenarien und sorgt dort für Dynamik und Effizienz.
Über den Autor:
Simon Anthony ist Senior Sales Engineer bei der MariaDB Corporation, einem führenden Anbieter von cloud-basierten und lokalen Datenbanklösungen.