Spanner-Proof-of-Concept-Playbook

Auf dieser Seite finden Sie eine Strategie für die Planung und Durchführung eines Proof of Concept (PoC) mit Spanner. Es bietet detaillierte Referenzen und Einblicke in wichtige Aspekte eines POC, z. B. Instanzkonfiguration, Schemadesign, Laden von Daten und Leistungsbewertung. Darin werden die wichtigsten Schritte zur Bewertung der Funktionen von Spanner beschrieben und Sie können potenzielle Risiken und Vorteile im Zusammenhang mit der Einführung von Spanner ermitteln.

Neben der Validierung der technischen Funktionen von Spanner hat ein POC zwei weitere Zwecke:

  • Damit Sie die Vorteile von Spanner für Ihren Anwendungsfall besser nachvollziehen können
  • Risiken bei der Einführung von Spanner erkennen

Ein Spanner-POC umfasst eine Vielzahl von Bewertungsaspekten, die jeweils auf Ihre spezifischen geschäftlichen und technischen Ziele zugeschnitten sind, wie im folgenden Diagramm dargestellt.

Spanner-Machbarkeitsnachweis

Die Richtlinien in diesem Dokument helfen Ihnen bei der Bewertung der einzelnen Bereiche.

  • Unter Leistung und Skalierbarkeit erfahren Sie, wie Spanner bestimmte Arbeitslasten und Latenzanforderungen verarbeitet und welche Auswirkungen verschiedene Instanzkonfigurationen haben. Diese Tests können die Fähigkeit von Spanner zur nahtlosen Skalierung demonstrieren.

  • Mit den Monitoring-Funktionen können Sie beurteilen, ob Spanner die erforderlichen Informationen für einen effektiven Datenbankbetrieb liefert. Diese Bewertung umfasst:

    • Optionen zum Analysieren von Abfrageausführungsplänen
    • Systemressourcennutzung
    • Optionen zum Konfigurieren von Benachrichtigungen

    Ein POC kann Lücken aufdecken, die geschlossen werden müssen, um die betriebliche Effizienz vollständig zu optimieren.

  • Sicherheit und Compliance sind entscheidend, um die Eignung von Spanner für Ihre Organisation zu bestimmen. Dazu gehören Bewertungen, um sicherzustellen, dass Spanner Sicherheitsrisiken minimieren und gleichzeitig robuste Compliance-Vorteile bieten kann, z. B.:

    • Verschlüsselungsoptionen wie CMEK oder EKM für Daten, die übertragen werden und inaktiv sind
    • Zugriffssteuerung nach dem Prinzip der geringsten Berechtigung
    • Audit-Logging
    • Einhaltung gesetzlicher Anforderungen
  • Funktionen für Sicherung und Notfallwiederherstellung (Disaster Recovery, DR) sind unerlässlich, um die Betriebs- und Datenausfallsicherheit zu gewährleisten. Mit einem POC können die DR-Funktionen von Spanner wie Wiederherstellung zu einem bestimmten Zeitpunkt und Verfügbarkeit validiert werden.

  • Bei der Migrationsdurchführbarkeit geht es darum, die Komplexität des Übergangs von Ihrer aktuellen Datenbanklösung zu Spanner zu verstehen. Durch die Bewertung der Schemakompatibilität, der Migrationstools und der Anwendungsänderungen können Sie die erforderlichen Investitionen quantifizieren und die Risiken und Vorteile der Einführung von Spanner ermitteln.

Während der Evaluierung sollten Sie die Funktionen von Spanner kennenlernen, um sicherzustellen, dass sie die funktionalen Anforderungen Ihrer Anwendung erfüllen. Dazu gehören möglicherweise Tests der globalen Konsistenz, der SQL-Abfragefunktionen oder der Integration in andere Google Cloud-Dienste.

Bewertungen können die einzigartigen Stärken von Spanner hervorheben, z. B. die regionsübergreifende Konsistenz. Sie können aber auch potenzielle Risiken aufzeigen, z. B. den Integrationsaufwand mit Ihrer bestehenden Anwendungsarchitektur.

Lebenszyklus von POC-Aktivitäten

In diesem POC werden die folgenden Schritte beschrieben. Folgen Sie den Empfehlungen in diesem Dokument, um Spanner für Ihren speziellen Anwendungsfall einzurichten und zu bewerten.

Der Lebenszyklus umfasst Planung, Konfiguration, Dimensionierung, Laden von Daten, Lasttests, Monitoring und Optimierung.

POC planen

Planungsschritt

Die Grundlage für einen erfolgreichen POC sind klare, messbare Ziele, die sowohl mit technischen als auch mit geschäftlichen Prioritäten übereinstimmen. Vermeiden Sie vage Ziele wie Potenzial von Spanner erkunden, da sie oft zu unkonzentrierten Bemühungen und mehrdeutigen Ergebnissen führen. Verknüpfen Sie Ihre POC-Ziele stattdessen mit konkreten Zielen, z. B. eine Verfügbarkeit von 99,999 %, weniger Ausfallzeiten oder eine Skalierung, um einen 200-prozentigen Anstieg des Durchsatzes zu bewältigen und gleichzeitig die Transaktionslatenzen unter 20 ms zu halten.

Die einzigartige Architektur von Spanner ist ideal für Arbeitslasten, die eine massive Skalierbarkeit erfordern. Daher ist die Bewertung der Skalierbarkeit für Ihren Anwendungsfall ein guter Ausgangspunkt. Testszenarien sollten Folgendes umfassen:

  • Umgang mit typischen betrieblichen Lasten
  • Trafficspitzen verwalten
  • Effizientes Herunterskalieren

Mit diesen Tests können Sie nachvollziehen, wie Spanner unter verschiedenen Bedingungen funktioniert und ob die Lösung Ihre technischen Anforderungen an die Skalierbarkeit erfüllt. Spezifische, umsetzbare Ziele helfen nicht nur, den POC zu strukturieren, sondern schaffen auch eine solide Grundlage für die Bewertung des Erfolgs.

Quantifiziertes Bewertungsschema definieren

Eine Rubrik mit klaren, messbaren Messwerten und diskreten Erfolgskriterien ist unerlässlich, um festzustellen, ob der POC seine Ziele erreicht hat. Sie sollten beispielsweise nicht nur die Leistung testen, sondern auch Ziele wie die folgenden angeben:

  • Bestimmte QPS (Abfragen pro Sekunde) auf Produktionsniveau bereitstellen
  • Latenzen unter 20 ms bei vordefinierten Spitzenlasten beibehalten
  • Klar definierte Trafficspitzen ohne Leistungseinbußen verarbeiten

Anhand klar definierter Kriterien können Sie Spanner objektiv für Ihre Arbeitslast bewerten und umsetzbare Informationen für die nächsten Schritte erhalten. Geben Sie genau an, welche Perzentilziele für die Latenz von Lese- und Schreibvorgängen (z. B. p50 und p95) gelten sollen. Eine klare Definition akzeptabler Latenzschwellenwerte hilft Ihnen, Tests der Spanner-Leistung zu entwickeln, die Ihren geschäftlichen Anforderungen entsprechen.

Ein Beispiel für eine Bewertungsrichtlinie könnte so aussehen:

Bewertungsfacette Erfolgskriterien
Verfügbarkeit 99,999 %
Sicherheit CMEK mit EKM erforderlich
Garantie für Recovery Point Objective (RPO) im Falle eines regionalen Ausfalls 0
Latenzlimit für die wichtigsten Transaktionen P50 unter 20 ms
Latenz für unsere wichtigsten nutzerorientierten Anfragen P50 unter 100 ms
Skalierbarkeit Nachweisen, dass eine Skalierung von 10.000 Transaktionen pro Sekunde auf 100.000 Transaktionen pro Sekunde mit einer P50-Latenz von unter 20 ms innerhalb einer Stunde möglich ist

Bewertungsfälle eingrenzen

Für einen POC ist keine vollständige Migration erforderlich. Konzentrieren Sie sich stattdessen auf das Testen repräsentativer Arbeitslasten oder kritischer Komponenten Ihres Systems. Sie können beispielsweise wichtige Anfragen, kritische Transaktionsformen oder bestimmte datengesteuerte Workflows identifizieren, die für Ihre Abläufe von zentraler Bedeutung sind. Schränken Sie den Umfang ein, um die Komplexität zu reduzieren und gleichzeitig dafür zu sorgen, dass die Ergebnisse relevant und aussagekräftig sind. Dieser Ansatz bietet eine überschaubare Möglichkeit, die Funktionen von Spanner zu bewerten, ohne sich mit den Feinheiten einer vollständigen Systemmigration auseinandersetzen zu müssen.

Spanner-Instanzkonfiguration auswählen

Spanner-Konfigurationsschritt

Wenn Sie eine Spanner-Instanz zu Testzwecken erstellen, wählen Sie eine Instanzkonfiguration aus, die die Geschäftsanforderungen für den geografischen Standortund das SLA für die Dienstverfügbarkeit erfüllt. Spanner bietet verschiedene Konfigurationen, darunter Einzelregionen-, Multiregionen- und Dualregionenkonfigurationen. Jede Konfiguration ist so konzipiert, dass sie unterschiedliche Anforderungen an Latenz, Verfügbarkeit und Redundanz erfüllt.

  • Bei Konfigurationen für eine Region werden Daten in einer Google Cloud-Region gespeichert. Das bietet eine geringe Latenz in dieser Region und ist kostengünstig. Diese Topologien sind ideal für Arbeitslasten, die eine zonale Redundanz innerhalb der Region erfordern, die eine Verfügbarkeit von 99,99 % bietet.
  • Bei Konfigurationen für zwei Regionen werden Daten in zwei Regionen in einem Land repliziert. In jeder Region gibt es ein Zeugenreplikat für Failover. Diese Konfiguration bietet eine höhere Verfügbarkeit (99,999%) und Fehlertoleranz als eine Einrichtung in einer einzelnen Region. Diese Topologien eignen sich gut für Arbeitslasten mit strengen Compliance-Anforderungen (z. B. Datenstandort) oder Anforderungen an die geografische Nähe.
  • Bei multiregionalen Konfigurationen werden Daten über mehrere Regionen hinweg repliziert, was eine sehr hohe Verfügbarkeit und Ausfallsicherheit bei regionalen Ausfällen gewährleistet. Diese Topologien eignen sich ideal für Anwendungen, die Georedundanz mit einer Verfügbarkeit von bis zu 99,999 % erfordern.

Latenz bei regionenübergreifenden Instanzen

Bei biregionalen und multiregionalen Konfigurationen kann die geografische Verteilung von Spanner-Replikaten die Latenz beeinflussen. Die Schreiblatenz hängt von der Nähe der Leader-Region ab, die Lese-/Schreibtransaktionen koordiniert, und den anderen Regionen, die jeden Schreibvorgang bestätigen. Wenn Sie die Rechenressourcen Ihrer Anwendung in der Nähe der Leader-Region platzieren, werden Roundtrip-Verzögerungen reduziert und die Latenz minimiert.

Sie können die führende Region einer Datenbank ändern, um sie an die Anforderungen Ihrer Anwendung anzupassen. Bei schreibgeschützten Vorgängen kann Spanner veraltete Lesevorgänge vom nächstgelegenen Replikat ausführen, wodurch die Latenz verringert wird. Bei starken Lesevorgängen ist möglicherweise die Leader-Region beteiligt, was die Latenz des Vorgangs erhöhen kann. Um die Latenz in multiregionalen Setups zu optimieren, sollten Sie die führende Region strategisch auswählen, die Rechenressourcen für Ihre Dienste in derselben Region wie die führende Region platzieren und bei Arbeitslasten mit vielen Lesevorgängen veraltete Lesevorgänge nutzen.

Konfigurationen, die den Anforderungen Ihrer Anwendung entsprechen

Berücksichtigen Sie bei der Auswahl einer Instanzkonfiguration für Ihre Anwendung Faktoren wie Verfügbarkeit, Latenz und Anforderungen an den Datenstandort. Wenn Ihre Anwendung beispielsweise Antworten mit geringer Latenz für Nutzer in einem bestimmten geografischen Gebiet erfordert, kann eine regionale Instanz ausreichend sein. Für Anwendungen, die eine höhere Verfügbarkeit erfordern oder global verteilte Nutzer bedienen, sind jedoch multiregionale Konfigurationen besser geeignet.

Beginnen Sie mit einer Konfiguration, die den Produktionsanforderungen Ihrer Anwendung entspricht, um die Leistung zu bewerten. Latenz und Kosten variieren je nach Konfiguration. Passen Sie Ihre POC-Umgebung daher an die Anforderungen Ihres Anwendungsfalls an. Simulieren Sie bei Bereitstellungen in mehreren Regionen die geografische Verteilung der Dienste und testen Sie die Latenz, um sicherzustellen, dass die Konfiguration Ihren Produktionsanforderungen entspricht. Weitere Informationen finden Sie unter Leitfaden zur Platzierung der führenden Region in multiregionalen Spanner-Konfigurationen.

Spanner-Größe

Schritt zur Größenanpassung von Spanner

Stellen Sie die anfängliche Rechenkapazität für Ihre Spanner-Instanz bereit, damit sie die Evaluierungsarbeitslast während des POC effektiv bewältigen kann. Die anfängliche Instanzgröße sollte auf die erwartete Arbeitslast abgestimmt sein. Dabei sind die Anzahl der Lese- und Schreibabfragen pro Sekunde, die Komplexität der Abfragen und die Parallelität zu berücksichtigen.

Wenn Sie mit einer angemessenen Annahme beginnen, können Sie eine Grundlage schaffen und die Kampagne basierend auf der beobachteten Leistung schrittweise skalieren. Sie können die Größenempfehlungen aus den Referenz-Benchmarks von Spanner verwenden, um eine Baseline-Instanzkonfiguration zu erstellen.

Die Dimensionierung während eines POC sollte iterativ erfolgen. Beginnen Sie mit einer Ersteinrichtung, beobachten Sie dann wichtige Messwerte wie Latenz und CPU-Auslastung und passen Sie die zugewiesene Rechenkapazität nach Bedarf an. So können Sie die Skalierbarkeit und Leistungsfähigkeit von Spanner validieren und gleichzeitig Bedingungen nachbilden, die denen in Ihrer Produktionsumgebung ähneln.

Typische Arbeitslastmuster wie gleichbleibender Traffic im Vergleich zu schwankender Nachfrage sollten sich auf Ihre Dimensionierung auswirken. Wenn Sie Autoscaling aktivieren, stellt Spanner die Kapazität der Rechenressourcen dynamisch bereit, um der Arbeitslastintensität gerecht zu werden.

Schemadesign

Schritt „Schemadesign“

Das Schemadesign ist ein wichtiger Aspekt eines Spanner-POC, da die Art und Weise, wie Sie Ihre Daten organisieren, sich direkt auf Leistung und Skalierbarkeit auswirken kann.

Ein gut durchdachtes Schema ist die Grundlage für die Demonstration der Spanner-Funktionen in einem POC. Lasttests decken oft potenzielle Engpässe oder Ineffizienzen auf, die iterative Verbesserungen ermöglichen, um ein optimales Schema zu erstellen.

Skalierbarkeit im Blick

Wenn Sie ein Datenbankschema für Spanner erstellen, müssen Sie die verteilte Architektur berücksichtigen. Hier einige wichtige Überlegungen und Optimierungen:

  • Primärschlüssel:Wählen Sie Primärschlüssel aus, mit denen Daten gleichmäßig über den Schlüsselbereich verteilt werden. Vermeiden Sie kontinuierlich ansteigende Schlüssel wie Zeitstempel, die Hotspots in Splits verursachen können.
  • Indexe:Entwerfen Sie Indexe, um die Abfrageleistung zu optimieren. Achten Sie dabei auf die Auswirkungen auf die Schreibvorgänge und Speicherkosten. Zu viele oder schlecht geplante Indexe können unnötigen Mehraufwand verursachen.
  • Tabellenverschachtelung:Verwenden Sie die Tabellenverschachtelung, um Zugriffsmuster für verknüpfte Daten zu optimieren. Dadurch kann die prozessübergreifende Kommunikation reduziert und die Effizienz von Anfragen verbessert werden.

Best Practices für das Schemadesign von Spanner, um häufige Fehler zu vermeiden und ein Schema zu entwerfen, das hohe Leistung und Skalierbarkeit unterstützt.

Sie können ein Schemadraft in der Google Cloud Konsole erstellen, wie im folgenden Bild gezeigt.

Erstellen Sie ein Schemadraft in der Console.

Schemamigration mit dem Spanner-Migrationstool

Das Spanner-Migrationstool (SMT) kann die Schemaerstellung bei der Migration von relationalen Datenbanken wie MySQL oder PostgreSQL vereinfachen. SMT automatisiert die Schemagenerierung und umfasst grundlegende Optimierungen, z. B. das Vorschlagen von Indexen und Schemaanpassungen. SMT bietet zwar einen guten Ausgangspunkt, aber oft sind manuelle Anpassungen erforderlich, um das Schema an Ihre spezifischen Anwendungsfälle oder Arbeitslastmuster anzupassen.

Iterativen Prozess für das Schemadesign verwenden

Ein anfängliches Schema bietet zwar einen Ausgangspunkt, ist aber wahrscheinlich nicht perfekt. Die Schemaerstellung für einen POC ist keine einmalige Aufgabe, sondern ein iterativer Prozess, der sich weiterentwickelt, wenn Sie durch Ihre Tests Erkenntnisse gewinnen. Ein robustes Schema ist für die Anwendungsleistung unerlässlich. Dazu sind ein durchdachtes anfängliches Design, die Nutzung von Tools wie SMT und eine iterative Optimierung auf Grundlage der Ergebnisse von Lasttests erforderlich. So können Sie sicherstellen, dass Ihr Schema die Anforderungen Ihrer Anwendung effektiv erfüllt. Außerdem erfahren Sie, wie Sie die Spanner-Funktionen am besten nutzen.

Laden der Daten

Für einen erfolgreichen Spanner-POC müssen repräsentative Daten in die Datenbank geladen werden, um das Schemadesign zu validieren und Anwendungs-Workflows zu simulieren. Es gibt mehrere empfohlene Tools, mit denen sich dieser Prozess optimieren lässt. Für das Laden Ihrer eigenen Daten bietet Spanner die folgenden Optionen:

  • Reverse-ETL (Extrahieren, Transformieren und Laden) von BigQuery in Spanner ist ein benutzerfreundlicher, integrierter Mechanismus zum Laden von Daten, mit dem Sie SQL-basierte Transformationen verwenden können, um Daten in Spanner zu laden. Diese Methode eignet sich für eine Vielzahl von Datenformaten, einschließlich semistrukturierter Daten wie JSON.
  • Für relationale Datenbanken wie MySQL und PostgreSQL automatisiert das Spanner Migration Tool (SMT) die Schemaerstellung, die Datentypzuordnung und das Laden von Massendaten.
  • Für Flatfile-Formate stellt Google Dataflow-Vorlagen für CSV zu Spanner und Avro zu Spanner bereit, mit denen Sie manuelle Schemadefinitionen für das Bulk-Laden von Daten erstellen können. Für JDBC-kompatible Datenbanken bietet Google die Dataflow-Vorlage „JDBC für Spanner“.

Weitere Informationen zu diesen Optionen finden Sie unter Eigene Daten verwenden.

Wenn keine Beispieldaten verfügbar sind, können Sie Tools zur Generierung synthetischer Daten wie JMeter von Machmeter und QuickPerf verwenden, um Datasets zu erstellen, die auf Ihr Schema und Ihren Anwendungsfall zugeschnitten sind. Weitere Informationen finden Sie unter Beispieldaten generieren.

Eigene Daten nutzen

Schritt „Eigene Daten verwenden“

Wenn Sie Beispieldaten haben, die Sie für den POC verwenden möchten, haben Sie mehrere Möglichkeiten, diese Daten in Spanner zu laden.

Quelle Tool Schemaerstellung Transformationen Datengröße
MySQL SMT automatisch Nur Datentyp-Konvertierung klein
PostgreSQL SMT automatisch Nur Datentyp-Konvertierung klein
Beliebiger JDBC JDBC zu Spanner Manuell Nur Datentyp-Konvertierung groß
CSV CSV-Datei in Spanner importieren Manuell Nur Datentyp-Konvertierung groß
Reverse-ETL für BigQuery Manuell Unterstützung komplexer Transformationen groß
Avro Avro für Spanner Manuell Nur Datentyp-Konvertierung groß
Reverse-ETL für BigQuery Manuell Unterstützung komplexer Transformationen groß
JSON Reverse-ETL für BigQuery Manuell Unterstützung komplexer Transformationen groß

Umgekehrtes ETL von BigQuery zu Spanner

Mit BigQuery Reverse-ETL zu Spanner können Sie schnell eine Vielzahl von Datenquellen aufnehmen und sie mit SQL in BigQuery-Tabellen transformieren. Anschließend können Sie Daten aus der BigQuery-Tabelle in eine Spanner-Tabelle exportieren. Er ist besonders nützlich für semistrukturierte Daten wie JSON, die häufig als Exporte aus NoSQL-Datenquellen stammen. BigQuery bietet eine automatische Schemaerkennung, die Erstellung von Spanner-Schemas erfolgt jedoch manuell. Sie müssen das Schema also definieren, bevor Sie Daten laden.

Spanner-Migrationstool

Um Ihren POC zu starten, können Sie das Spanner Migration Tool (SMT) verwenden, um Daten aus MySQL- und PostgreSQL-Quellen in Spanner zu migrieren. SMT automatisiert die Erstellung von Schemas und ordnet Datentypen aus der Quelldatenbank ihren entsprechenden Typen in Spanner zu. Außerdem werden Spanner-spezifische Empfehlungen zur Schemaoptimierung gegeben. Das macht das Tool besonders nützlich für einfache Migrationen, bei denen eine automatische Schemaumstellung ausreicht.

Das SMT bietet eine Benutzeroberfläche, die Sie durch den Migrationsprozess führt. Dabei wählen Sie die Quelldatenbank aus und sehen sich Empfehlungen und Optionen für das Schemadesign an.

Dataflow-Vorlagen

Dataflow ist ein vollständig verwalteter Dienst, der für die skalierbare Datenverarbeitung entwickelt wurde. Er eignet sich daher gut zum Laden großer Datenmengen.

Google bietet die folgenden Open-Source-Vorlagen für gängige Lademuster:

  • Mit CSV to Spanner werden Daten aus CSV-Dateien, die in Cloud Storage gespeichert sind, in Spanner geladen.
  • Mit Avro für Spanner werden vorhandene Avro-Datendateien aus Cloud Storage geladen.
  • Mit JDBC to Spanner werden Daten aus Datenbanken geladen, die JDBC unterstützen.

Für jede dieser Vorlagen müssen Sie das Spanner-Schema manuell erstellen, bevor Sie mit dem Laden der Daten beginnen.

Dataflow wird automatisch skaliert, um Datasets jeder Größe zu verarbeiten. So wird eine leistungsstarke Datenerfassung in Spanner gewährleistet, auch für Datasets im Terabyte-Bereich. Diese Skalierbarkeit ist mit einigen Nachteilen verbunden:

  • Dataflow-Pipelines müssen manuell konfiguriert werden, um das Schema, die Datenzuordnung und die Ausführungsparameter für eine optimale Ausführung zu definieren.
  • Dataflow bietet die Flexibilität und Leistung, die für umfangreiche Datenmigrationen erforderlich sind. Die Einrichtung und Verwaltung kann jedoch aufwendiger sein als bei anderen Tools.

Beispieldaten generieren

Beispieldaten generieren.

Wenn Sie keine Beispieldaten haben, aber einen bestimmten Anwendungsfall im Sinn haben, können Sie das Schema entsprechend Ihren Anforderungen modellieren und Tools verwenden, um repräsentative Datasets zu generieren. Mit diesen Tools können Sie Spanner mit aussagekräftigen Daten füllen, um Ihr Schemadesign und Ihre Anwendungs-Workflows zu validieren.

JMeter von Machmeter

JMeter from Machmeter enthält Beispiele, in denen JMeter verwendet wird, um Beispieldaten für Spanner zu generieren. Da Machmeter sich auf anwendungsfallorientierte Beispiele konzentriert, ist es ein guter Ausgangspunkt für die Generierung von Datenmustern, die strukturell Ihrem erwarteten Produktionsschema ähneln. Die bereitgestellten Beispiele enthalten Skripts für Bulk-Einfügungen und andere Vorgänge. Sie können die Skripts anpassen, um synthetische Datasets im großen Maßstab zu generieren. Weitere Informationen finden Sie im Machmeter-Repository oder in der Dokumentation.

QuickPerf

QuickPerf wird mit dem Spanner-JDBC-Treiber verteilt. QuickPerf bietet SQL-basierte Scripts, mit denen schnell repräsentative Datasets zum Testen der Schemaintegrität und des Datenbankverhaltens erstellt werden können. Das ist eine einfache Möglichkeit, schnell kleine bis mittelgroße Datasets zu generieren, die weniger komplex sind.

Lasttests

Schritt für Lasttests

Mit Lasttests können Sie die Leistung von Spanner bei der Verarbeitung von Arbeitslasten beobachten, um sicherzustellen, dass Ihre Datenbank die optimale Konfiguration für Produktionsanforderungen hat. Zwei zuvor vorgestellte Tools, JMeter von Machmeter und QuickPerf, eignen sich besonders gut zum Simulieren von Arbeitslasten und zum Messen von Leistungsmesswerten wie Durchsatz, Latenz und Ressourcennutzung.

Apache JMeter, erweitert durch das Machmeter-Projekt, bietet ein leistungsstarkes Framework für verteilte Lasttests mit Spanner. Machmeter enthält vorgefertigte JMeter-Konfigurationen, die speziell für die Simulation von Spanner-Arbeitslasten entwickelt wurden. Diese Konfigurationen können so angepasst werden, dass repräsentative Abfragen, Transaktionen und Batchvorgänge ausgeführt werden. So können Sie die Leistung von Spanner in verschiedenen Szenarien messen.

Da mit JMeter gleichzeitige Nutzer und Transaktionen simuliert werden können, ist es eine gute Wahl, um die Skalierbarkeit und Stabilität Ihrer Spanner-Instanz zu testen. Sie können JMeter im verteilten Modus mit Kubernetes oder dem verwalteten Dienst GKE bereitstellen, um Ihre Testumgebung zu skalieren. Die Ergebnisse geben Aufschluss darüber, wie Spanner bestimmte Arbeitslasten verwaltet, bei steigender Nachfrage skaliert und bei Spitzenlasten funktioniert.

Weitere Informationen und Beispielkonfigurationen finden Sie im Machmeter-Repository.

QuickPerf ist ein einfaches Benchmarking-Tool, das für Leistungstests mit Spanner entwickelt wurde. Der Fokus liegt auf der Generierung von Leistungsmesswerten mit minimalem Einrichtungsaufwand, sodass Sie schnell Optimierungen vornehmen können. QuickPerf ist einfach zu konfigurieren und eignet sich besonders gut für kleinere Tests und Szenarien, in denen Sie die Leistungsauswirkungen bestimmter Schema- oder Abfrageoptimierungen schnell messen möchten.

Best Practices für Belastungstests

Bei der Durchführung von Lasttests ist es wichtig, die Best Practices von Spanner zu befolgen, um genaue und umsetzbare Ergebnisse zu erhalten.

  • Aufwärmphase:Geben Sie Spanner nach dem Skalieren von Knoten oder dem Einführen einer neuen Arbeitslast eine Aufwärmphase (in der Regel mindestens 30 Minuten), damit ein stabiler Zustand erreicht werden kann.
  • Relevante Messwerte erfassen:Konzentrieren Sie sich auf Messwerte wie Durchsatz (Vorgänge pro Sekunde), Latenzperzentile (z. B. p50, p95) und CPU-Auslastung, um zu verstehen, wie Spanner Ihren Arbeitslastanforderungen gerecht wird.
  • Lange Benchmarks ausführen:Für repräsentativere Ergebnisse sollten Sie Ihre Lasttests über einen längeren Zeitraum (z. B. über eine Stunde) ausführen, um Systemverhalten wie Rebalancing und Hintergrundwartungsaufgaben zu berücksichtigen.
  • Skalierungstests:Testen Sie sowohl Scale-up- als auch Scale-down-Szenarien, um das Verhalten von Spanner bei verschiedenen Knotenkonfigurationen und Spitzenlasten zu beobachten.

Mit Tools wie JMeter Machmeter und QuickPerf sowie Best Practices für Lasttests können Sie die Leistung von Spanner effektiv bewerten, Engpässe identifizieren und Ihre Datenbank optimieren, um den Anforderungen Ihrer Arbeitslast gerecht zu werden.

Monitoring

Monitoring-Schritt

Um die Leistung und Skalierbarkeit von Spanner während eines POC effektiv zu demonstrieren, insbesondere unter Last, müssen Sie die Betriebsmerkmale von Spanner genau kennen. Spanner bietet eine umfassende Suite von Monitoring- und Diagnosetools, mit denen Sie detaillierte Einblicke in jeden Aspekt der Leistung Ihrer Datenbank erhalten. Dieses Toolset bietet eine Reihe von Ressourcen, von Messwert-Dashboards bis hin zu detaillierten Systemtabellen, mit denen Sie Engpässe erkennen, Designentscheidungen validieren und die Leistung optimieren können.

Systemstatistiken bieten detaillierte Einblicke in die Leistung und den Betriebsstatus einer Spanner-Instanz. Es bietet Messwerte und Statistiken zu verschiedenen Bereichen, darunter CPU-Auslastung, Latenz und Durchsatz, mit anpassbaren Detaillierungsgraden. Während eines POC ist dies der Ausgangspunkt für die Beobachtung des Spanner-Verhaltens während Ihrer Tests. Mit Systemstatistiken können Sie Leistungsengpässe wie eine hohe CPU-Auslastung oder erhöhte Latenzen für Lese- oder Schreibvorgänge schnell erkennen. Sie bildet die Grundlage für nachfolgende Untersuchungen.

Query Insights bietet eine Top-down-Ansicht der Abfrageausführung. Zuerst werden die häufigsten und kostspieligsten Abfragen anhand von Messwerten wie CPU-Zeit, Ausführungsanzahl und durchschnittlicher Latenz identifiziert. Mit Query Insights können Sie detaillierte Ausführungspläne untersuchen, einschließlich Statistiken für jeden Schritt der Abfrage. Außerdem werden bestimmte Vorgänge ermittelt, die zu Verlangsamungen führen. Außerdem bietet er Funktionen, mit denen Sie historische Leistungstrends untersuchen und die Abfrageleistung in verschiedenen Zeiträumen vergleichen können. So können Sie Regressionen oder die Auswirkungen von Schema- und Codeänderungen erkennen. Zusätzliche Tools wie der Index Advisor analysieren Ihre Abfragen, um neue oder geänderte Indexe zu empfehlen, die die Abfrageleistung verbessern können.

Transaktionsstatistiken bieten Einblick in die Transaktionsleistung mit detaillierten Messwerten zur Transaktionslatenz, zu Commit-Wartezeiten, zur Anzahl der gelesenen und geschriebenen Zeilen und Byte sowie zu Teilnehmern an verteilten Transaktionen. Diese Messwerte geben Aufschluss über hohe Latenzzeiten oder abgebrochene Transaktionen und liefern Details zu ihren Merkmalen. Bei einem POC-Lasttest sind Transaktionsstatistiken unerlässlich, um die Transaktionseffizienz des Systems unter Belastung zu bewerten. So können Sie die Leistung überwachen und bei steigender Last Beeinträchtigungen erkennen. Wenn Sie einzelne Transaktionen analysieren, können Sie die Ursachen für Verlangsamungen ermitteln, z. B. wenn lang andauernde Transaktionen andere blockieren oder einzelne Transaktionen übermäßig große Datenmengen lesen oder schreiben. Mithilfe der Informationen aus Transaktionsstatistiken können Sie gezielte Anpassungen vornehmen, z. B. Transaktionsgrenzen optimieren, Abfragen in Transaktionen verfeinern oder das Schema anpassen, um die Datenmenge zu reduzieren, die bei typischen Transaktionen verwendet wird. So wird sichergestellt, dass der POC die Fähigkeit von Spanner demonstriert, transaktionale Konsistenz und Leistung auf dem erwarteten Lastniveau aufrechtzuerhalten.

Sperreinsichten bieten Einblick in das Sperrverhalten von Transaktionen und helfen Ihnen, Probleme mit Sperrinhalten zu erkennen und zu beheben. Sie enthält Informationen zu Sperren, einschließlich der spezifischen Zeilenschlüsselbereiche, die das Problem verursachen. Bei einem POC-Lasttest sind Sperreninformationen entscheidend, um festzustellen, ob Transaktionssperrenkonflikte zu Skalierbarkeitsbeschränkungen führen. Wenn die gleichzeitige Last zunimmt, konkurrieren Transaktionen möglicherweise um die Aktualisierung derselben Daten, was zu längeren Wartezeiten und einem geringeren Durchsatz führt. Diese Informationen helfen Ihnen bei der Schemaoptimierung, der Änderung von Transaktionsgrenzen und der Anpassung der Anwendungslogik. Diese Aktionen verringern Konflikte und sorgen dafür, dass die Spanner-Datenbank die Leistung unter der prognostizierten Arbeitslast beibehält. So wird eine Leistungsminderung aufgrund von Sperrmechanismen verhindert.

Hotspot-Statistiken identifizieren Leistungsengpässe, insbesondere eine erhöhte Latenz, die durch Hotspot-Bedingungen verursacht werden. Hotspots treten in der Regel bei einer hohen und ungleichmäßigen Belastung auf. Häufige Ursachen für Hotspots sind:

  • Suboptimales Schemadesign
  • Primärschlüssel auswählen
  • Zugriffsmuster, bei denen Vorgänge auf eine kleine Teilmenge von Daten konzentriert werden, anstatt sie gleichmäßig auf die Knoten zu verteilen

Bei einem POC-Belastungstest können Sie anhand von Statistiken zum Heißlaufen entscheiden, wo Sie Ihr Schema optimieren sollten. Möglicherweise müssen Sie beispielsweise die Primärschlüssel anpassen oder die sekundären Indexe ändern, um Hotspots zu vermeiden.

Key Visualizer bietet eine visuelle Darstellung der Datenbanknutzungsmuster im Zeitverlauf über den gesamten Schlüsselbereich von Tabellen und Indexen hinweg. Es werden Heatmaps generiert, die Lese- und Schreibaktivitäten zeigen und Bereiche mit hoher Intensität und potenziell problematischen Mustern hervorheben. Während eines POC hilft dieses Tool, das Schemadesign zu validieren und potenzielle Einschränkungen der Skalierbarkeit zu ermitteln. Wenn die Last zunimmt, können Sie beobachten, wie die Arbeitslast auf Ihren Schlüsselbereich und die entsprechenden Tabellen und Indexe verteilt wird.

Introspection-Tabellen, insbesondere das System der Spanner_SYS-Tabellen, enthalten eine Fülle von Informationen zum internen Status und zur Leistung der Datenbank. Diese Tabellen enthalten detaillierte Statistiken zur Abfrageausführung, zum Transaktionsverhalten, zu Sperrkonflikten und zu Schemadetails. Während eines POC-Lasttests bieten diese Introspection-Tabellen einen datengesteuerten Ansatz für die Leistungsdiagnose, der über die oben genannten Analysetools hinausgeht. Sie können damit beispielsweise die Ursache von ansonsten schwer zu erkennenden Sperrkonflikten in Ihrer Datenbank ermitteln und umsetzbare Erkenntnisse für die Optimierung gewinnen.

Optimierung

Optimierungsschritt

Belastungstests sind ein wichtiger Schritt, um Leistungsprobleme und potenzielle Engpässe in Ihrer Spanner-Implementierung zu identifizieren. Die aus diesen Tests gewonnenen Erkenntnisse sollten die Optimierungsbemühungen in Bezug auf Schemadesign, Transaktionsverhalten und Abfrageleistung leiten, damit Spanner die Anforderungen Ihrer Arbeitslast erfüllt.

Schemaentwurf optimieren

Ein erstes Schemadesign basiert auf Best Practices für Skalierbarkeit und Leistung. Wenn Sie jedoch Arbeitslasten unter realen Bedingungen ausführen, werden oft Bereiche aufgedeckt, die eine Optimierung erfordern. Lasttests liefern wertvolle Informationen dazu, wie das Schema unter bestimmten Bedingungen funktioniert. Sie machen Probleme wie Hotspotting, ungleichmäßige Datenverteilung oder Ineffizienzen bei der Abfrageleistung deutlich.

Bei der Optimierung werden die folgenden Bereiche an die Arbeitslastmerkmale Ihrer Anwendung angepasst.

  • Anpassungen des Primärschlüssels:Wenn bei Lasttests Hotspots oder eine unausgewogene Datenverteilung auftreten, überprüfen Sie das Design des Primärschlüssels. Sie können beispielsweise dem Schlüsselpräfix Zufälligkeit hinzufügen, um Daten gleichmäßiger auf Knoten zu verteilen und gleichzeitig die Abfrageeffizienz beizubehalten.
  • Indexoptimierungen:Mit Lasttests lässt sich ermitteln, ob sich redundante oder übermäßige Indexierung negativ auf den Schreibdurchsatz auswirkt. Entfernen Sie unnötige Indexe oder strukturieren Sie vorhandene Indexe neu, um die Abfrageleistung zu verbessern. Bewerten Sie die Indexselektivität und sorgen Sie dafür, dass sie mit typischen Abfragemustern übereinstimmt.
  • Verschränkte Tabellen und Hierarchien:Prüfen Sie, ob sich die Abfragelatenz durch Verschränken von Tabellen reduzieren lässt. Passen Sie die Entscheidungen zum Interleaving basierend auf den während des Tests beobachteten Zugriffsmustern an. Wenn die hierarchische Struktur zu unerwartetem Mehraufwand führt, sollten Sie die Tabellen dagegen separat modellieren.

Informationen zum Erstellen skalierbarer Schemas finden Sie unter Best Practices für das Schemadesign in Spanner.

Transaktionssemantik und ‑abfragen optimieren

Bei Lasttests werden häufig Ineffizienzen bei der Ausführung von Transaktionen und Abfragen aufgedeckt, z. B. Probleme mit hoher Parallelität oder Sperrungen. Optimieren Sie die Transaktionssemantik und Abfragestrukturen, um den Durchsatz zu maximieren und die Latenz zu minimieren:

  • Transaktionsmodi:Verwenden Sie für jeden Arbeitslastvorgang den entsprechenden Transaktionsmodus. Verwenden Sie beispielsweise schreibgeschützte Transaktionen für Abfragen, mit denen keine Daten geändert werden, oder partitionierte DML für Bulk-Updates und ‑Löschvorgänge.
  • Batching:Verwenden Sie nach Möglichkeit Batch-Schreibvorgänge, um den durch mehrere Roundtrips verursachten Mehraufwand zu reduzieren.
  • Abfrageoptimierung:Führen Sie ein Refactoring von Abfragen durch, sodass nur die erforderlichen Spalten und Zeilen enthalten sind, nutzen Sie Indexe und verwenden Sie Abfrageparameter in Ihrer Anwendung, um den Overhead zu reduzieren.

Informationen zu Optimierungsstrategien finden Sie unter Transaktionen – Übersicht und Best Practices für SQL.

Iterative Lasttests

Die Optimierung ist ein iterativer Prozess. Führen Sie nach jeder wichtigen Schema- oder Abfrageänderung Lasttests durch, um Verbesserungen zu validieren und sicherzustellen, dass keine neuen Engpässe entstehen.

Simulieren Sie realistische Anwendungsszenarien mit unterschiedlichen Parallelitätsstufen, Transaktionstypen und Datenmengen, um zu bestätigen, dass Spanner unter Spitzen- und Steady-State-Bedingungen wie erwartet funktioniert.

Wichtige Messwerte, die Sie im Blick behalten sollten

Behalten Sie während der Optimierung wichtige Messwerte wie Latenz (p50, p99), Durchsatz und CPU-Auslastung im Blick.

Nächste Schritte