Horizontale und vertikale Datenbankskalierung

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.

Skalierung und Innovation mit Google Cloud-Datenbanken

Was bedeutet Datenbankskalierung?

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.

Was ist vertikale Skalierung?

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 und Herausforderungen der vertikalen Skalierung

Vorteile

  • Einfachheit: Ihr Code bleibt unverändert, da die Datenbank für Ihre Anwendung immer noch wie eine einzelne Maschine aussieht.
  • Einfachere Wartung: Sie müssen nur einen Server verwalten und aktualisieren.
  • Konsistenz: Sie müssen sich keine Gedanken über die Synchronisierung von Daten zwischen mehreren Servern machen.

Herausforderungen

  • Feste Limits: Jede Maschine hat eine maximale Kapazität. Irgendwann können Sie einem einzelnen Server keine weitere Hardware mehr hinzufügen.
  • Ausfallzeit: Oft müssen Sie die Datenbank für einen Moment offline schalten, um diese Hardwareupgrades durchzuführen.
  • Single Point of Failure: Wenn dieser eine Server ausfällt, kann Ihre gesamte Anwendung mit ihm ausfallen.

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.

Beispiele und häufige Anwendungsfälle für die vertikale Skalierung

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.

Was ist horizontale Skalierung?

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 und Herausforderungen der horizontalen Skalierung

Vorteile

  • Unbegrenztes Wachstum: Sie können beliebig viele Maschinen hinzufügen, wenn Ihr Bedarf steigt.
  • Hochverfügbarkeit: Da Sie mehrere Server haben, bleibt das System auch dann online, wenn ein Knoten ausfällt.
  • Kosteneffizienz: Sie können günstigere Standardhardware verwenden, anstatt einen einzigen, teuren Server zu kaufen.

Herausforderungen

  • Komplexität: Ihre Anwendung muss wissen, wie sie mit mehreren Servern kommuniziert, was zu Designherausforderungen führt.
  • Datenkonsistenz: Die Synchronisierung von Daten auf vielen verschiedenen Computern kann schwierig zu verwalten sein.
  • Codeänderungen: Möglicherweise müssen Sie den Anwendungscode ändern, um eine Umgebung mit verteilter Datenbank zu verwalten.

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.

Beispiele und häufige Anwendungsfälle für horizontale Skalierung

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.

Häufig gestellte Fragen

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.

Wichtige Unterschiede zwischen horizontaler und vertikaler Skalierung

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

SQL oder NoSQL: Mythen rund um die Skalierung

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.

Den richtigen Ansatz für die Skalierbarkeit wählen

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:

  • Wenn Sie eine vorhersehbare, moderate Menge an Traffic haben, ist es einfacher, mit der vertikalen Skalierung zu beginnen, da sie leichter und schneller einzurichten ist.
  • Wenn Sie für eine globale Skalierung entwickeln oder eine konstante Verfügbarkeit benötigen, sollten Sie von Anfang an eine horizontale Skalierung planen. Das Design ist zwar aufwendiger, aber es kann Ihnen später viel Ärger ersparen.

Nahtlos skalieren in Google Cloud

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.

Gleich loslegen

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

Google Cloud