Hochskalieren und Aufskalieren im Vergleich
Eine Einführung in die Datenbankskalierbarkeit beim Cloud Computing
Skalierbarkeit in aller Munde – eine Begriffserklärung
Skalierbarkeit beim Cloud Computing bedeutet, dass die Größe oder Leistung einer IT-Lösung oder -Ressource schnell und einfach erhöht oder verringert werden kann. Obwohl der Begriff „Skalierbarkeit“ die Fähigkeit eines jeden Systems beschreiben kann, eine steigende Arbeitslast zu bewältigen, bezieht er sich im Zusammenhang mit dem Hoch- und Aufskalieren häufig auf Datenbanken und Daten in großen Mengen.
Die Skalierbarkeit von Datenbanken ist einer der wichtigsten Aspekte für moderne Fachkräfte in der App-Entwicklung. Angenommen, eine neue App wird veröffentlicht, und die Nachfrage danach steigt von einer Handvoll auf Millionen Benutzer weltweit. Effizientes Skalieren ist hier eine der zentralen Voraussetzungen, damit Fachkräfte in der App-Entwicklung mit der Nachfrage Schritt halten und Downtime minimieren können.
Bei der Debatte um das Auf- und Hochskalieren geht es darum, wie wir mithilfe von Skalierbarkeit die immensen und variierenden Datenmengen, das riesige Datenspektrum und sich ändernde Workloadmuster bewältigen können, die in der Cloud, auf mobilen Geräten, in sozialen Medien und aus Big Data generiert werden.
Aufskalieren und Hochskalieren im Vergleich
Datenbankskalierbarkeit lässt sich im Grunde in zwei Typen unterteilen:
Bei der vertikalen Skalierung, auch Hoch- und Herunterskalieren genannt, vergrößern oder verkleinern Sie die Rechenleistung oder Datenbanken nach Bedarf, entweder durch eine Änderung der Leistungsstufen oder mithilfe von Pools für elastische Datenbanken, damit eine automatische Anpassung an Ihre Workloadanforderungen erfolgt.
Bei der horizontalen Skalierung, auch Auf- und Abskalieren genannt, fügen Sie weitere Datenbanken hinzu oder unterteilen Ihre große Datenbank in kleinere Knoten, indem Sie einen Datenpartitionierungsansatz namens Sharding verwenden, der serverübergreifend schneller und einfacher verwaltet werden kann.
Vertikales Hochskalieren
Die vertikale Skalierung wird eingesetzt, wenn Sie schnell reagieren müssen, um ein Leistungsproblem zu beheben, das Sie nicht mit klassischen Datenbankoptimierungstechniken lösen können, zum Beispiel Abfrageänderungen oder Indizierung. Das Hochskalieren ist hilfreich, um Spitzen in Ihren Workloads zu bewältigen, bei denen die aktuelle Leistungsebene nicht alle Anforderungen erfüllen kann. Außerdem können Sie damit weitere Ressourcen hinzufügen, um Spitzenworkloads problemlos zu verarbeiten. Wenn die Ressourcen dann nicht mehr benötigt werden, können Sie zum ursprünglichen Zustand herunterskalieren und Cloudkosten sparen.
In diesen Fällen sollten Sie hochskalieren:
-
Sie bemerken, dass Ihre Workloads ein Leistungslimit erreichen, zum Beispiel einen CPU- oder E/A-Grenzwert.
-
Sie müssen schnell reagieren, um Leistungsprobleme zu beheben, die mit der klassischen Datenbankoptimierung nicht gelöst werden können.
-
Sie benötigen eine Lösung, mit der Sie die Dienstebene wechseln können, um sich an veränderte Latenzanforderungen anzupassen.
Horizontales Aufskalieren
Aufskalieren oder horizontales Skalieren bietet sich für Fachkräfte in der App-Entwicklung an, wenn sie selbst auf der höchsten betrieblichen Leistungsstufe nicht genügend Ressourcen für ihre Workloads mobilisieren können. Bei der horizontalen Skalierung werden Daten serverübergreifend in mehrere Datenbanken oder Shards aufgeteilt. Jeder dieser Shards kann dann unabhängig hoch- und herunterskaliert werden.
Wie verbessert die Partitionierung von Daten die Skalierbarkeit? Wenn Sie ein Singleton durch das Hinzufügen von Ressourcen wie VMs hochskalieren, erreicht es irgendwann sein physisches Hardwarelimit. Da Datenpartitionen jeweils auf einem separaten Server gehostet werden, können Sie ein System nahezu unbegrenzt aufskalieren, wenn Sie Daten auf mehrere Shards aufteilen.
Bestimmte Datenbanktechnologien, insbesondere nicht relationale oder NoSQL-Datenbanken, verfügen über die besondere Fähigkeit, Daten horizontal durch Shardingaufzuskalieren. So können sie große, nicht zusammenhängende, unbestimmte oder sich sehr schnell ändernde Daten verarbeiten.
Auch einige relationale (SQL-)Datenbankdienste, die ursprünglich nur das Hoch- und Herunterskalieren ermöglichten, haben ihr Portfolio um interessante Optionen erweitert, um mit den Skalierbarkeitsvorteilen von nicht relationalen Datenbanken mithalten zu können. Mit Hyperscale-Diensten wie Microsoft Azure SQL-Datenbank Hyperscale und Azure Database for PostgreSQL Hyperscale können Benutzer Speicher im Handumdrehen auf bis zu 100 TB skalieren. Außerdem bieten diese Dienste eine flexible, cloudnative Architektur, in der Speicher nach Bedarf wachsen kann, und ermöglichen nahezu sofortige Sicherungen sowie schnelle Datenbankwiederherstellungen innerhalb weniger Minuten.
In diesen Fällen sollten Sie aufskalieren:
-
Ihre Anwendungen sind geografisch verteilt, wobei jede App auf einen Teil der Daten in der Region zugreifen soll. Jede App greift nur auf den Shard zu, der dieser Region zugeordnet ist – ohne Auswirkungen auf die anderen Shards.
-
Sie arbeiten mit einem globalen Shardingszenario, zum Beispiel mit einem Lastenausgleich. In diesem Rahmen haben Sie viele geografisch verteilte Clients, die Daten in ihre eigenen dedizierten Shards einfügen.
-
Sie haben Ihre Leistungsanforderungen selbst in den höchsten Leistungsstufen Ihres Diensts vollständig ausgeschöpft, oder Ihre Daten passen nicht in ein Singleton.
Automatische Skalierung
Bei der automatischen Skalierung werden Ressourcen automatisch und dynamisch so zugeordnet, dass die Leistungsanforderungen eines Systems erfüllt werden. Je mehr Arbeit anfällt, desto mehr zusätzliche Ressourcen benötigen Apps unter Umständen, um die erforderliche Leistung zu halten oder die wachsende Nachfrage zu decken. Wenn die Nachfrage abnimmt und die zusätzlichen Ressourcen nicht mehr benötigt werden, sparen Sie Cloudausgaben, weil der automatische Dienst nicht verwendete Ressourcen wieder freigibt.
Die automatische Skalierung macht sich die Elastizität von in der Cloud gehosteten Umgebungen zunutze. Sie verringert den Verwaltungsaufwand, da sie Systembetreiber von der Pflicht entbindet, ständig über das Hinzufügen oder Entfernen von Ressourcen zu entscheiden oder die Leistung des Systems zu überprüfen.
Obwohl Apps vertikal oder horizontal skaliert werden können, ist es weniger üblich, die vertikale Skalierung zu automatisieren, da das System beim Hochskalieren während der Neubereitstellung häufig vorübergehend abgeschaltet wird.
Die automatische Skalierung kommt häufiger beim horizontalen Skalieren zum Einsatz, da beim Auf- und Abskalieren nur Instanzen einer Ressource hinzugefügt oder entfernt werden. Ihre App wird parallel ohne Unterbrechung ausgeführt, während neue Ressourcen bereitgestellt werden. Sinkt der Bedarf, können Ressourcen nahtlos ohne Downtime heruntergefahren und freigegeben werden.
Viele Anbieter von cloudbasierten Systemen wie Microsoft Azure unterstützen die automatische horizontale Skalierung.
Häufig gestellte Fragen
-
Eine Datenbank ist eine Sammlung zusammenhängender Informationen, die so gespeichert und sortiert sind, dass die Verwaltung und der Zugriff vereinfacht werden. Da neue Daten und Datentypen in rasantem Tempo generiert werden, besteht die Herausforderung darin, die Ordnung, Zugänglichkeit und Sicherheit dieser Daten zu wahren. Große Datenmengen werden häufig mithilfe von Datenbankverwaltungssystemen (Database Management Systems, DBMS) und den darin enthaltenen Verwaltungstools verarbeitet.
Um den Mengen und dem breiten Spektrum der Daten gerecht zu werden, die in der Cloud, auf mobilen Geräten, in sozialen Medien und aus Big Data generiert werden, werden ständig neue Datenbanktypen und -technologien entwickelt.
-
Bei NoSQL-Datenbanken, die auch oft als nicht relational oder "nicht nur SQL" bezeichnet werden, handelt es sich um verschiedene Datenbanktechnologien, in denen das Speichern und Abrufen von Daten anders erfolgt als in herkömmlichen relationalen (SQL-)Datenbanken.
NoSQL-Datenbanken erfordern kein vordefiniertes Schema und können mehrere Datenmodelle verwenden. Dies macht sie äußerst effektiv bei der Verarbeitung großer Mengen unstrukturierter Daten und der Skalierung von Big-Data-Datenbankprojekten.
-
PostgreSQL ist eine stabile Open-Source-Datenbank, die mit relationalen und nicht relationalen Abfragen funktioniert und für ihre Zuverlässigkeit und Datenintegrität bekannt ist. PostgreSQL wird zum Beispiel im Finanzdienstleistungssektor, in der Fertigung, für geografische Informationssysteme von Behörden und in der Webtechnologie großflächig eingesetzt. Fachkräfte in der Entwicklung nutzen PostgreSQL für die App-Programmierung, während Administratoren beim Schutz ihrer Daten darauf vertrauen.
-
Das Zwischenspeichern wird von Fachkräften in der Entwicklung und IT-Experten oft eingesetzt, um die Leistung und Skalierbarkeit eines Systems zu optimieren. Dabei werden häufig verwendete Daten vorübergehend in einen schnellen Speicher kopiert, der sich nahe bei der App befindet. Liegt dieser schnelle Datenspeicher näher bei der App als die ursprüngliche Datenquelle, wird durch das Zwischenspeichern die Antwortzeit von Client-Apps deutlich verbessert und die Datenbereitstellung beschleunigt. Fachkräfte in der Entwicklung entwerfen Apps häufig so, dass verarbeitete Daten zwischengespeichert werden, und funktionieren den Cache so um, dass Anforderungen schneller als in gewöhnlichen Datenbankabfragen verarbeitet werden.
-
Datensharding ist eine Art horizontale Datenpartitionierung, mit der Sie Ihre große Datenbank in mehrere kleine Datenbanken aufteilen können, um die serverübergreifende Verwaltung zu beschleunigen und zu vereinfachen.
-
Platform-as-a-Service, häufig als PaaS abgekürzt, ist ein Dienstangebot von Cloudanbietern, das eine bedarfsgesteuerte Umgebung für die Entwicklung, Tests, die Bereitstellung und die Verwaltung von Apps umfasst. Mit PaaS-Lösungen können Fachkräfte in der Entwicklung webbasierte und mobile Apps entwerfen, ohne sich mit der Einrichtung oder Verwaltung der erforderlichen zugrunde liegenden Server-, Speicher-, Netzwerk- und Datenbankinfrastruktur befassen zu müssen.
Ressourcen
Cloudskalierbarkeit mit Azure erkunden
Entdecken Sie unsere ganzheitliche Herangehensweise an das Hoch- und Aufskalieren, die sich nahtlos in Ihr individuelles Szenario einfügt – in lokalen, Multicloud- und Edge-basierten Umgebungen. Die Azure-Familie von Datenbankdiensten ist auf moderne Fachkräfte in der App-Entwicklung zugeschnitten und bietet eine Auswahl vollständig verwalteter relationaler, NoSQL-basierter und In-Memory-Datenbanken für geschützte und Open-Source-basierte Engines.
Sparen Sie Zeit und Geld dank automatisierter Infrastrukturverwaltung, einschließlich Automatisierungslösungen für mehr Skalierbarkeit, Verfügbarkeit und Sicherheit.
Verwandte Produkte und Dienste
Azure SQL
Produktfamilie der SQL-Clouddatenbanken mit flexiblen Optionen für die Migration, Modernisierung und Entwicklung von Apps
Azure Cosmos DB
Schnelle NoSQL-Datenbank mit offenen APIs für jede Größenordnung
Azure PostgreSQL
Vollständig verwaltete, intelligente und skalierbare PostgreSQL-Lösungen
Azure SQL-Datenbank
Verwaltetes, intelligentes SQL in der Cloud
Azure SQL Managed Instance
Verwaltete, stets aktuelle SQL-Instanz in der Cloud
SQL Server auf virtuellen Computern
SQL Server-Workloads zu möglichst niedrigen Gesamtkosten zur Cloud migrieren
Azure Database for MySQL
Vollständig verwaltete skalierbare MySQL-Datenbank
Azure Maria DB
Verwalteter MariaDB-Datenbankdienst für Fachkräfte in der App-Entwicklung
Azure Cache for Redis
Leistungsstärkere Anwendungen dank hohem Durchsatz und latenzarmer Zwischenspeicherung von Daten
-
Grenzenloses Skalieren – mit verwalteten Datenbanken
Konzentrieren Sie sich auf die App-Entwicklung, und vereinfachen Sie Ihre Arbeit mit von Microsoft Azure verwalteten Datenbanken.