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 sind nicht mehr Eventual Consistency. Stattdessen sind sie strikt konsistent, es sei denn, Sie fordern ausdrücklich 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 wird im Datastore-Modus die Migration von Cloud Datastore zu Firestore gestartet. Die Migrationen beginnen mit Datenbanken mit sehr geringem Traffic und werden in den nächsten Monaten auf Datenbanken mit höherem Traffic ausgeweitet.

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. Das Upgrade erfordert keine Ausfallzeiten.

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

Upgradephasen

Auf übergeordneter Ebene führen wir diesen Vorgang für das Upgrade Ihrer Cloud Datastore-Datenbank auf Firestore im Datastore-Modus aus. Für diesen Prozess ist keine Anwendungsausfallzeit 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. Kopieren Sie vorhandene Daten und Indexeinträge aus Cloud Datastore in Firestore im Datastore-Modus. 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.

Für diesen Prozess werden die folgenden Phasen verwendet.

1. Schreibvorgänge synchron anwenden

In dieser Phase werden Schreibvorgänge synchron auf Cloud Datastore angewendet. Schreibvorgänge melden erst dann den Erfolg, 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 Schreibvorgänge auch synchron anwendet (und unterscheidet sich vom Standardverhalten von Cloud Datastore, bei dem Schreibvorgänge asynchron nach dem Commit angewendet werden).

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

Bei Datenbanken mit sehr geringer Aktivität wird diese Phase übersprungen. Wenn Sie feststellen möchten, ob diese Phase in das Upgrade Ihrer Datenbank einbezogen wurde, prüfen Sie die Logs für die Phase APPLY_WRITES_SYNCHRONOUSLY.

2. Kopieren und bestätigen

Diese Phase stellt den Beginn der Migration dar. Damit wird ein Replikat von Firestore im Datastore-Modus eingeführt und es werden folgende Schritte ausgeführt:

  1. Übersicht

    Entitätsschreibvorgänge in Cloud Datastore fließen auch über einen Nebenkanal zum Replikat von Firestore im Datastore-Modus. Dies ist Teil des vorhandenen Replikationssystems von Cloud Datastore. Diese Schreibvorgänge haben keine Auswirkung auf die Schreiblatenz. Das Replikat von Firestore im Datastore-Modus puffert diese Schreibvorgänge, um sie nach dem Kopierschritt anzuwenden.

  2. Kopieren

    Erstellen Sie im Replikat für 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

Stark konsistente Lesevorgänge (nicht transaktional) aus Firestore im Datastore-Modus bereitstellen. Beachten Sie, dass die Cloud Datastore-Semantik für Lesevorgänge weiterhin gilt. Obwohl Lesevorgänge jetzt direkt aus Firestore stammen, benötigt Firestore weiterhin Cloud Datastore, um sicherzustellen, dass es für strikt konsistente Lesevorgänge auf dem neuesten Stand ist.

5 Schreibvorgänge weiterleiten

Sie können Entitätsschreibvorgänge und transaktionale Lesevorgänge an Firestore im Datastore-Modus weiterleiten. Gleichzeitige Änderungen an derselben Entität führen weiterhin zu abgebrochenen Transaktionen. Gleichzeitige Änderungen an verschiedenen Entitäten innerhalb derselben Entitätengruppe führen nicht mehr zu abgebrochenen Transaktionen.

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 gleich, aber in der Abrechnung werden jetzt Firestore-SKUs aufgeführt. Auf der Seite mit den App Engine-Kontingenten wird die Firestore-Nutzung anstelle der Cloud Datastore-Nutzung angezeigt.

Transaktionen

Cloud Datastore-Datenbanken verwenden optimistische Gleichzeitigkeit für Transaktionen in Firestore im Datastore-Modus. Durch eine optimistische Gleichzeitigkeit bleibt das vorhandene Verhalten von Transaktionen in Cloud Datastore erhalten.

Einige zuvor migrierte Datenbanken mit sehr wenig Aktivität wurden mit pessimistischen Sperren für Transaktionen in Firestore im Datastore-Modus anstatt mit optimistischen Gleichzeitigkeitsvorgänge migriert.

Sie können den Gleichzeitigkeitsmodus Ihrer Datenbank während oder nach der Migration prüfen, indem Sie die Logs für die Phase PREPARE prüfen.

Logging und Fortschrittsbenachrichtigungen

Der Upgradeprozess verwendet Cloud Logging, 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 Namen des Logging-Dienstes datastore.googleapis.com veröffentlicht:

Logname Überwachte Ressource Nutzlast
Migrationsstatus Datastore-Datenbank type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
Migrationsfortschritt Datastore-Datenbank type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

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

Das Migration_Progress-Protokoll wird jedes Mal aktualisiert, wenn das Upgrade in eine neue Phase übergeht (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS und REDIRECT_WRITES). .

Wenn Sie während des Upgrades Benachrichtigungen erhalten möchten, können Sie auf der Grundlage der beiden Logs logbasierte Messwerte erstellen und auf dieser Grundlage Benachrichtigungen erstellen.

Cloud Monitoring-Messwerte

Die für Ihre Datastore-Datenbank verfügbaren Cloud Monitoring-Messwerte bleiben während des Upgradevorgangs gleich. Weitere Informationen finden Sie unter Verfügbare Datastore-Messwerte.