Automatisches Upgrade auf Firestore

Auf dieser Seite wird der Upgradepfad von Cloud Datastore zu Firestore im Datastore-Modus beschrieben.

Firestore kann im Datastore-Modus verwendet werden und ist damit abwärtskompatibel mit Datastore. Mit Firestore im Datastore-Modus können Sie Zugriff auf die verbesserte Speicherschicht von Firestore erhalten und gleichzeitig das Systemverhalten von Datastore beibehalten. Mit Firestore im Datastore-Modus werden die folgenden Einschränkungen für Cloud Datastore aufgehoben:

  • Abfragen haben keine Eventual Consistency mehr. Stattdessen sind sie strikt konsistent, es sei denn, Sie fordern explizit Eventual Consistency an.
  • Abfragen in Transaktionen müssen nicht länger Ancestor-Abfragen sein.
  • Transaktionen sind nicht mehr auf 25 Entitätengruppen beschränkt.
  • Schreibvorgänge in eine Entitätengruppe sind nicht mehr auf 1 Vorgang pro Sekunde beschränkt.

Weitere Informationen zum Datastore-Modus finden Sie unter Firestore im Datastore-Modus.

Seit Juni 2021 wurden Migrationen von Cloud Datastore zu Firestore im Datastore-Modus gestartet. Die Migrationen beginnen mit Datenbanken mit sehr geringem Traffic und werden in den nächsten Monaten auf Datenbanken mit höherem Traffic erweitert.

Automatisches Upgrade auf Firestore im Datastore-Modus

Wenn Sie eine Anwendung verwalten, die Cloud Datastore verwendet, müssen Sie Ihren Anwendungscode nicht aktualisieren. Wir informieren Sie über den Zeitplan für das Upgrade Ihrer Anwendung auf Firestore im Datastore-Modus. Bei diesem Upgrade kommt es zu keinen Ausfallzeiten.

Wenn Sie weitere Fragen zum automatischen Upgradevorgang haben, setzen Sie sich über einen unserer Supportkanäle mit uns in Verbindung.

Upgrade-Phasen

Auf übergeordneter Ebene führen Sie diese Schritte aus, um die Cloud Datastore-Datenbank auf Firestore im Datastore-Modus zu aktualisieren. Für diesen Prozess ist keine Ausfallzeit der Anwendung erforderlich:

  1. Fügen Sie ein neues Datenreplikat von Firestore im Datastore-Modus zu Ihrer vorhandenen Cloud Datastore-Datenbank hinzu. Duplizieren Sie asynchron Entitätenschreibvorgänge in Firestore im Datastore-Modus.

  2. Vorhandene Daten und Indexeinträge aus Cloud Datastore in Firestore im Datastore-Modus kopieren. Prüfen Sie die Daten nach dem Kopieren.

  3. Leiten Sie die Entitäten direkt an Firestore im Datastore-Modus weiter. Leiten Sie zuerst Lesevorgänge mit Eventually Consistency und dann Lesevorgänge mit strikter Konsistenz weiter.

  4. Leiten Sie Entitätenschreibvorgänge und transaktionale Lesevorgänge direkt an Firestore im Datastore-Modus weiter.

Dieser Prozess umfasst die folgenden Phasen.

1. Schreibvorgänge synchron anwenden

In dieser Phase werden Schreibvorgänge synchron auf Cloud Datastore angewendet: Schreibvorgänge melden den Erfolg erst, wenn alle Änderungen an Entitäten und Indexen auf mindestens ein Replikat angewendet wurden. Dadurch wird das Verhalten von Firestore im Datastore-Modus simuliert, das auch Schreibvorgänge synchron anwendet (und unterscheidet sich vom Standardverhalten von Cloud Datastore, in dem Schreibvorgänge nach dem Commit asynchron angewendet werden).

In dieser Phase sollen vor dem Upgrade Latenzauswirkungen von synchronen Firestore in Datastore-Modus angezeigt werden. Die synchrone Anwendung von Schreibvorgängen wird während und nach der Migration fortgesetzt.

Datenbanken mit sehr geringer Aktivität überspringen diese Phase. Prüfen Sie in den Logs für die Phase APPLY_WRITES_SYNCHRONOUSLY, ob diese Phase im Upgrade Ihrer Datenbank enthalten ist.

2. Kopieren und verifizieren

Diese Phase steht für den Beginn der Migration. Damit wird ein Replikat von Firestore im Datastore-Modus eingeführt und es werden die folgenden Schritte ausgeführt:

  1. Übersicht

    Entitätsschreibvorgänge in Cloud Datastore fließen auch in einen Nebenkanal zum Replikat von Firestore im Datastore-Modus ein. Dies geschieht als Teil des vorhandenen Replikationssystems von Cloud Datastore. Diese Schreibvorgänge wirken sich nicht auf die Schreiblatenz aus. Das Replikat von Firestore im Datastore-Modus puffert diese Schreibvorgänge, um sie nach dem Kopierschritt anzuwenden.

  2. Kopieren

    Erstellen Sie im Replikat von Firestore im Datastore-Modus eine Offline-Kopie Ihrer vorhandenen Daten und Indexeinträge. Der Kopierschritt hat keine Auswirkungen auf Cloud Datastore-Vorgänge. Dieser Schritt kann mehrere Tage dauern.

  3. Drain-Übersicht

    Wenden Sie die Schreibvorgänge aus dem Übersichtsschritt auf die Daten aus der Offline-Kopie an.

  4. Daten prüfen

    Prüfen Sie die Daten in Firestore im Datastore-Modus noch einmal, indem Sie sie mit den Daten in Cloud Datastore vergleichen.

3. Lesevorgänge mit Eventually Consistency weiterleiten

Stellen Sie Lesevorgänge mit Eventually Consistency (Abfragen ohne Ancestor-Filter) aus Firestore im Datastore-Modus bereit. Die Cloud Datastore-Semantik für Lesevorgänge gilt an dieser Stelle nach wie vor:

  • Ancestor-Abfragen haben strikte Konsistenz.
  • Nicht-Ancestor-Abfragen haben Eventual Consistency.
  • Suchvorgänge haben strikte Konsistenz (mit Ausnahme der explizit für Eventual Consistency konfigurierten Jobs).

Firestore im Datastore-Modus fungiert weiterhin als Replikat Ihrer Cloud Datastore-Daten.

4. Lesevorgänge mit strikter Konsistenz weiterleiten

Stellen Sie strikt konsistente Lesevorgänge (nicht transaktional) aus Firestore im Datastore-Modus bereit. Beachten Sie, dass die Cloud Datastore-Semantik für Lesevorgänge weiterhin gilt. Obwohl Lesevorgänge jetzt direkt aus Firestore stammen, greift Firestore weiterhin auf Cloud Datastore zu, um sicherzustellen, dass es für strikt konsistente Lesevorgänge aktuell ist.

5 Schreibvorgänge weiterleiten

Leiten Sie Entitätenschreibvorgänge und transaktionale Lesevorgänge an Firestore im Datastore-Modus weiter. Gleichzeitige Änderungen an derselben Entität führen weiterhin zu Transaktionsabbrüchen. Gleichzeitige Änderungen an verschiedenen Entitäten innerhalb derselben Entitätengruppe führen nicht mehr zu Transaktionsabbrüchen.

Zu Beginn dieser Phase greift Firestore im Datastore-Modus weiterhin auf Cloud Datastore zu, um vor jedem Schreibvorgang zu garantieren, dass es aktuell ist. Nach einem abschließenden Durchlauf, bei dem alle vorherigen Schreibvorgänge angewendet werden, verlässt sich Firestore im Datastore-Modus nicht mehr auf Cloud Datastore.

6. Migration abgeschlossen

Nun gilt die Semantik von Firestore im Datastore-Modus für Lesevorgänge: Alle Abfragen sind strikt konsistent.

Die Preise bleiben unverändert, aber Ihre Abrechnung listet jetzt Firestore-SKUs auf. Auf der Seite "App Engine-Kontingente" wird die Firestore-Nutzung anstelle der Cloud Datastore-Nutzung angezeigt.

Transaktionen

Für Cloud Datastore-Datenbanken wird die optimistische Gleichzeitigkeit für Transaktionen in Firestore im Datastore-Modus verwendet. Durch die optimistische Gleichzeitigkeit wird das vorhandene Verhalten von Transaktionen in Cloud Datastore beibehalten.

Einige zuvor migrierte Datenbanken mit sehr geringer Aktivität wurden mit pessimistischen Sperren für Transaktionen in Firestore im Datastore-Modus anstelle einer optimistischen Gleichzeitigkeit migriert.

Um den Gleichzeitigkeitsmodus Ihrer Datenbank während oder nach der Migration zu prüfen, prüfen Sie die Logs für die Phase PREPARE.

Logging und Fortschrittsbenachrichtigungen

Beim Upgradeprozess wird Cloud Logging verwendet, um Fortschrittsaktualisierungen zu veröffentlichen. Verwenden Sie zum Aufrufen der Logs den Log-Explorer, die Cloud Logging API oder das Cloud SDK.

Aktualisierungen werden in zwei Logs unter dem Logging-Dienstnamen datastore.googleapis.com veröffentlicht:

Logname Überwachte Ressource Nutzlast
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

Das Log migrationmigration_state“ wird aktualisiert, wenn sich der Gesamtstatus des Upgrades (RUNNING und COMPLETE) ändert.

Das Log zur Migration_Progress wird jedes Mal aktualisiert, wenn das Upgrade in eine neue Phase verschoben wird (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS und REDIRECT_WRITES).

Um Benachrichtigungen zu erhalten, während Ihr Upgrade fortgesetzt wird, können Sie anhand der beiden Logs logbasierte Messwerte erstellen und auf dieser Grundlage Benachrichtigungen erstellen.

Migrationsbanner in der Google Cloud Console

Während die Cloud Datastore-Datenbank migriert wird, wird in der Google Cloud Console auf der Seite Datastore-Entitäten ein Informationsbanner angezeigt. Dieses Banner enthält einen Link zum Öffnen von Cloud Logging und zum Filtern nach Migrationsupdates.

Zu Datastore-Entitäten

Cloud Monitoring-Messwerte

Die für Ihre Datastore-Datenbank verfügbaren Cloud Monitoring-Messwerte bleiben während des Upgrades erhalten, siehe verfügbare Datastore-Messwerte.