Wenn Ihre Anwendung wächst, kann Ihre Datenbank ohne die richtige Infrastruktur oder Änderungen zu einem Engpass in Ihrem System werden. Bei Traffic-Spitzen stehen Entwickler oft vor einer schwierigen Entscheidung: Sollen sie ihren aktuellen Server leistungsfähiger machen oder weitere Server hinzufügen? In diesem Leitfaden werden die Unterschiede zwischen horizontaler und vertikaler Skalierung, die jeweiligen Vor- und Nachteile und die Auswahl des richtigen Ansatzes für Ihre Anforderungen erläutert.
Datenbankskalierung ist der Prozess, die Kapazität, Leistung und Verfügbarkeit eines Systems zu erhöhen. So kann Ihre Datenbank mehr Daten verarbeiten und mit der wachsenden Anzahl von Nutzern Schritt halten.
In der Branche werden für diesen Prozess zwei Hauptbegriffe verwendet. Vertikale Skalierung oder „Scale-up“ und horizontale Skalierung oder „Scale-out“. Diese beiden Pfade zu verstehen, ist der erste Schritt zum Aufbau eines zuverlässigen Datensystems.
Bei der vertikalen Skalierung, auch als Hochskalierung bezeichnet, wird die Leistung Ihres vorhandenen Servers erhöht. Sie behalten denselben Datenbankknoten, statten ihn aber mit mehr CPU, Arbeitsspeicher oder Speicher aus, damit er seine Aufgabe erfüllen kann.
Dies wird oft als die traditionelle Methode zur Skalierung relationaler Datenbanken angesehen. Die Architektur bleibt einfach, da alle Daten an einem Ort gespeichert sind.
Vorteile
Herausforderungen
Verwaltete Datenbankdienste wie Cloud SQL können die vertikale Skalierung erleichtern, da Sie die Maschinengröße mit nur wenigen Klicks ändern können. Es ist jedoch wichtig zu bedenken, dass Sie möglicherweise immer noch an die Grenzen der physischen Hardware stoßen.
Kleiner Maßstab: Stellen Sie sich ein schnell wachsendes Start-up vor, das eine Webanwendung auf einer einzigen Datenbank ausführt. Wenn der Traffic steigt, können sie zu einer größeren Instanz wechseln, die ihnen mehr Rechenleistung bietet, um die zusätzlichen Besucher zu bewältigen, ohne dass sie ihren Anwendungscode neu schreiben müssen.
Unternehmen: Auch große Unternehmen mit einem Legacy-System können vertikale Skalierung nutzen. Diese Systeme basieren in der Regel auf komplexen Beziehungen zwischen Daten. Da ihr Code für eine einzelne Datenbank entwickelt wurde, können sie die Leistung dieser einen Maschine erhöhen, anstatt auf ein verteiltes System umzusteigen.
Interne Anforderungen: Einige Unternehmen verwenden die vertikale Skalierung auch für die interne Berichterstellung. Sie können beispielsweise den RAM ihres primären Datenbankservers erhöhen, damit dieser große, ressourcenintensive Abfragen schneller verarbeiten kann, ohne die Nutzererfahrung zu beeinträchtigen.
Bei der horizontalen Skalierung, auch Scale-out genannt, werden dem Datenbanksystem weitere Maschinen hinzugefügt, anstatt eine Maschine leistungsfähiger zu machen. So wird die Arbeit auf eine Gruppe von Servern verteilt. Sie ist ein Kernkonzept des modernen Cloud-Computings und verteilter Systeme.
Entwickler verwenden Techniken wie Sharding, bei dem Daten in kleinere Blöcke auf verschiedenen Servern aufgeteilt werden, und Replikation, bei der Daten auf mehrere Knoten kopiert werden.
Vorteile
Herausforderungen
Eine verteilte SQL-Datenbank wie Spanner kann Ihnen helfen, diese Herausforderungen zu bewältigen. Spanner übernimmt die schwierige Aufgabe, Daten auf mehreren Computern zu synchronisieren, sodass Sie Ihre Daten nicht manuell aufteilen müssen und die Sicherheit einer relationalen Datenbank erhalten. So können Sie horizontal skalieren, ohne Ihr System zu komplex zu machen.
Kapazität: Eine globale E-Commerce-Plattform kann bei großen Verkaufsaktionen die horizontale Skalierung nutzen. Wenn Millionen von Menschen gleichzeitig die Website besuchen, kann das System die Daten automatisch auf neue Knoten verteilen, um den Traffic zu bewältigen und sicherzustellen, dass kein einzelner Server überlastet wird.
Redundanz: Für geschäftskritische Finanzanwendungen wird manchmal auch horizontale Skalierung verwendet. Sie können ihre Datenbank auf mehrere physische Standorte verteilen, die als Verfügbarkeitszonen bezeichnet werden. So wird sichergestellt, dass die Anwendung auch bei Problemen in einem Rechenzentrum verfügbar bleibt und die Datenkonsistenz gewährleistet ist.
Nähe: Ein globales Gaming-Unternehmen kann Datenbankknoten in verschiedenen Teilen der Welt bereitstellen. Wenn ein Datenbankknoten näher am Spieler platziert wird, kann er ein schnelles, reibungsloses Erlebnis mit sehr geringer Verzögerung bieten. Wenn ein Spieler beispielsweise in Tokio lebt, werden seine Profildaten auf einem Datenbankknoten in Tokio gespeichert, um blitzschnelle Lese- und Schreibvorgänge zu ermöglichen.
Bei der Cloud-Skalierung bedeutet vertikale Skalierung, dass die Größe der virtuellen Maschine, auf der Ihre Datenbank gehostet wird, erhöht wird. Bei der horizontalen Skalierung werden einer Autoscaling-Gruppe oder einem verteilten Cluster weitere Maschineninstanzen hinzugefügt.
Einige Unternehmen verwenden eine Mischung aus beiden Methoden, die als diagonale Skalierung bezeichnet wird. Bei diesem Ansatz fügen Sie Ihrem System weitere Knoten hinzu (horizontale Skalierung) und aktualisieren die Hardwarekapazität (vertikale Skalierung). Große Unternehmen können so das Beste aus beiden Welten nutzen und dafür sorgen, dass ihre Datenbank sowohl hochverfügbar als auch leistungsstark genug für komplexe lokale Aufgaben ist.
Ja, das ist möglich. Früher war das schwierig, aber moderne verteilte SQL-Datenbanken wie Spanner verwenden eine fortschrittliche Uhrensynchronisierung und intelligente Protokolle, um eine horizontale Skalierung zu ermöglichen und gleichzeitig Ihre Daten organisiert und genau zu halten.
Achten Sie auf Warnsignale wie eine hohe CPU- oder Arbeitsspeichernutzung, langsame Abfragezeiten und erhöhte Latenz für Nutzer während der Spitzenzeiten. All dies sind Anzeichen dafür, dass Ihre aktuelle Datenbank möglicherweise nicht mehr mithalten kann.
Der Hauptunterschied zwischen horizontaler und vertikaler Skalierung besteht darin, wie Ressourcen zu Ihrem System hinzugefügt werden. Bei der vertikalen Skalierung wird die Leistung einer Maschine erhöht, während bei der horizontalen Skalierung weitere Maschinen zu Ihrem Netzwerk hinzugefügt werden.
Feature | Vertikale Skalierung | Horizontale Skalierung |
Konzept | Ressourcen zu einem Computer hinzufügen | Weitere Maschinen zum Netzwerk hinzufügen |
Kapazität | Hardware-Obergrenzen | Praktisch unbegrenzt |
Ausfallzeit | In der Regel sind Ausfallzeiten erforderlich | Keine Ausfallzeiten (Knoten werden dynamisch hinzugefügt) |
Komplexität | Niedriger (einfache Architektur) | Höher (erfordert verteilte Logik) |
Kosten | Höhere Kosten für große Hardware | Lineare Skalierung mit Standardmaschinen |
Feature
Vertikale Skalierung
Horizontale Skalierung
Konzept
Ressourcen zu einem Computer hinzufügen
Weitere Maschinen zum Netzwerk hinzufügen
Kapazität
Hardware-Obergrenzen
Praktisch unbegrenzt
Ausfallzeit
In der Regel sind Ausfallzeiten erforderlich
Keine Ausfallzeiten (Knoten werden dynamisch hinzugefügt)
Komplexität
Niedriger (einfache Architektur)
Höher (erfordert verteilte Logik)
Kosten
Höhere Kosten für große Hardware
Lineare Skalierung mit Standardmaschinen
Es gibt mehrere veraltete Vorstellungen über SQL- und NoSQL-Datenbanken, die in der Branche immer noch verbreitet sind. Die Schwierigkeiten bei der Skalierung herkömmlicher SQL-Datenbanken liegen vor allem in der Art und Weise, wie sie Joins und Datenkonsistenz verarbeiten. Eine relationale Datenbank auf viele Server zu verteilen, kann eine technische Herausforderung sein. Moderne verteilte Lösungen haben jedoch viele dieser Probleme gelöst, sodass Entwickler SQL horizontal skalieren können, ohne die benötigten relationalen Funktionen zu verlieren. Hier sind drei häufige Missverständnisse und die Wahrheit hinter diesen:
Fakt: Das ist möglich. Während ältere relationale Designs die vertikale Skalierung bevorzugten, ermöglichen moderne verteilte SQL-Systeme, dass relationale Datenbanken mehrere Maschinen umfassen. Dieser Ansatz kombiniert die Konsistenz von SQL mit der horizontalen Wachstumskraft moderner Cloud-Architekturen.
Fakt: NoSQL ist effektiv für riesige, unstrukturierte Datasets, SQL-Datenbanken sind oft besser für komplexe, strukturierte Abfragen geeignet. In vielen Fällen übertrifft eine gut abgestimmte SQL-Datenbank NoSQL, wenn Ihre Anwendung auf tiefen Beziehungen zwischen Datenpunkten beruht.
Wahrheit: Sie müssen sich nicht entscheiden. Moderne Architekturmuster ermöglichen es Ihnen, Ihr System über viele Maschinen hinweg zu skalieren und gleichzeitig strenge Regeln für die Datensicherheit, die sogenannte ACID-Compliance, im gesamten Cluster einzuhalten.
Die Entscheidung, wie Sie Ihre Datenbank skalieren möchten, hängt oft von Ihrem Budget, der Datenmenge und der erforderlichen Betriebszeit ab. Die typischen Ratschläge sind:
Google Cloud bietet eine Reihe von Datenbanktools, die sich an Ihre Skalierungsstrategie anpassen. Ganz gleich, ob Sie eine einfache Aufwärtsskalierung oder eine leistungsstarke Abwärtsskalierung benötigen – diese Produkte können Ihnen dabei helfen.


Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“ Produkte kennenzulernen.