Übersicht über die Migration von Primärschlüsseln

Auf dieser Seite wird beschrieben, wie Spanner mit Primärschlüsseln und Angeboten funktioniert wichtigsten Migrationsstrategien für die folgenden Anwendungsfälle:

Ein typischer Ansatz für Primärschlüssel besteht darin, Ersatzschlüssel wie automatisch inkrementierte Zahlen zu verwenden. Mit solchen Primärschlüsseln können Sie Ihre Schlüssel jetzt und in Zukunft flexibel optimieren. selbst wenn sich Ihre Geschäftslogik ändert. In einer Datenbank mit einer einzelnen Instanz und geringem Volumen eignen sich sequenzielle Schlüssel gut. In einem verteilten System sequenzielle Schlüssel schlecht skalieren.

Sequenzielle Primärschlüssel in Spanner

In Spanner hat jede Tabelle einen Primärschlüssel, der aus einer oder mehreren Spalten der Tabelle besteht. Mit dem Primärschlüssel Ihrer Tabelle wird jede Zeile eindeutig identifiziert. in einer Tabelle. Spanner verwendet den Primärschlüssel, um Zeilengruppen zu verteilen, als Splits bezeichnet, auf Rechenknoten in einer Spanner-Instanz. Dies ist Bereichsfragmentierung genannt. Damit kann Spanner Abfragen parallelisieren

Wenn Sie Zeilen mit Primärschlüsseln haben, deren Werte nahe beieinander liegen, z. B. monoton automatisch inkrementelle Schlüssel, werden sie in der Regel in derselben Teilung abgelegt. Dieses kann einen Hotspot erstellen, bei dem der Split den gesamten verfügbaren Rechen- und Arbeitsspeicher nutzen kann Ressourcen. Ein Hotspot kann die Latenz erhöhen, was zu Zeitüberschreitungen und abgebrochenen Transaktionen führen kann.

Um die Skalierbarkeit von Spanner zu nutzen und Hotspots zu vermeiden, Spanner bietet integrierte Lösungen als Alternativen zu automatisch erhöhten Primärschlüsseln.

Empfehlungen für Primärschlüssel

Für Primärschlüssel in Spanner wird standardmäßig die Verwendung von UUIDv4-Werten (Universally Unique Identifier Version 4) empfohlen. UUIDs sind 128-Bit-Kennungen die 122 Bit an zufälligen Daten verwenden. UUIDv4-Werte haben einen großen Wertebereich sind eindeutig einzigartig, unabhängig davon, wo sie generiert werden. Sie eignen sich daher gut als Primärschlüssel ohne Hotspots in Spanner.

Sie können Ganzzahlprimärschlüssel verwenden, da sie weniger Speicherplatz belegen und die Komplexität der erforderlichen Anwendungsänderungen reduzieren. Mit einer positiven bitreversierten Sequenz können Sie eindeutige Primärschlüsselwerte generieren, die sich gleichmäßig über den positiven 64‑Bit-Ganzzahlbereich verteilen.

Weitere Informationen zur Auswahl eines Primärschlüssels, um Hotspots zu vermeiden, finden Sie unter Best Practices für Schemadesign.

Migrationsstrategien

Je nach Anwendungsfall und Anforderungen Ihrer Anwendung können Sie einen Primärschlüssel bereitstellen. Migrationsstrategie. Jede dieser Migrationsstrategien:

  • Prüfen Sie, ob die migrierten Primärschlüssel korrekt sind.
  • Minimieren Sie Änderungen an nachgelagerten Anwendungen, z. B. Änderungen an Typen oder Primärschlüsselwerten.
  • Best Practices für Leistung und Skalierbarkeit von Spanner implementieren
  • Spanner ändert nur die Methode zum Generieren neuer Daten und wirkt sich nicht auf vorhandene Daten aus.

UUID-Schlüsseldatenbanken migrieren

Angenommen, Sie migrieren von einer Datenbank mit UUID-Primärschlüsseln zu Spanner. Vorhandene UUID-Schlüssel als Strings in der Quelldatenbank konfigurieren und importieren unverändert in Spanner importieren. UUID-Werte, insbesondere v4, sind eindeutig einzigartig, unabhängig davon, wo sie generiert werden.

Sie können die GENERATE_UUID()-Funktion (GoogleSQL, PostgreSQL) in Spanner zum Migrieren von UUID-Schlüsseldatenbanken.

Eine Anleitung zum Migrieren von UUID-Schlüsseldatenbanken finden Sie unter UUID-Schlüsselspalten migrieren.

Migration von Datenbankinstanzen mit sequenziellen Schlüsseln

Angenommen, Sie migrieren von einer Datenbank mit einer einzelnen Instanz, die sequenzielle monotone Schlüssel verwendet, z. B. AUTO_INCREMENT in MySQL, SERIAL in PostgreSQL oder den Standardtyp IDENTITY in SQL Server oder Oracle.

Konfigurieren Sie das Spanner-Objekt SEQUENCE so, dass die Werte im Bereich von vorhandene Schlüssel zu erstellen und neue, Bitumkehrschlüssel zu generieren. Bitumkehrende Schlüssel generiert durch das Spanner-Objekt SEQUENCE immer größer als null sind, und gleichmäßig über den positiven 64-Bit-Ganzzahlbereich verteilt.

Eine Anleitung zum Migrieren von Datenbanken mit sequenziellen Schlüsseln finden Sie unter Automatisch generierte sequenzielle Primärschlüssel migrieren.

Sequenzielle Schlüsseldatenbanken mit Live-Übergang migrieren

Beachten Sie, dass Sie von einer Datenbank mit einer einzelnen Instanz migrieren, die sequenzielle monotone Schlüssel verwendet Cloud Spanner zu erstellen und Replikationsszenarien zu unterstützen, z. B. möchten Sie eine Live-Umstellung zwischen den Datenbanksystemen durchführen.

Spanner-Objekt SEQUENCE so konfigurieren, dass der gesamte Wertebereich übersprungen wird vorhandener Schlüssel in Ihrer Quelldatenbank und generieren neue, umgekehrte Bit-Schlüssel. in Spanner. Bitumkehrte Schlüssel, die von Spanner generiert wurden SEQUENCE-Objekte sind immer größer als null, aber nicht geordnet.

Anweisungen zur Migration von Datenbanken, die Live-Umstellung unterstützen, Siehe Spanner und die Quelldatenbank verwenden.

Sequenzielle Schlüsseldatenbanken mit Abhängigkeiten von der Anwendungslogik migrieren

Angenommen, Sie migrieren von einer Datenbank mit sequenziellen monoton steigenden Schlüsseln und die Logik Ihrer Anwendung basiert auf der Primärschlüsselreihenfolge, um die Aktualität zu bestimmen oder neu erstellte Daten zu sequenzieren.

Erstellen Sie einen zusammengesetzten Schlüssel, der einen einheitlich verteilten Wert kombiniert, z. B. eine Shard-ID oder einen Hash als erste Komponente und eine fortlaufende Nummer als die zweite Komponente. So bleiben die geordneten Schlüssel/Wert-Paare ohne einen großen Hotspot zu verursachen.

Anleitungen zum Migrieren von sequenziellen Schlüsseldatenbanken mit Anwendungslogik Abhängigkeiten Weitere Informationen finden Sie unter Eigene Primärschlüssel migrieren.

Nächste Schritte