Passer automatiquement à Cloud Firestore

Cette page décrit la procédure de mise à niveau de Cloud Datastore vers Firestore en mode Datastore.

Firestore peut fonctionner en mode Datastore, ce qui permet d'assurer la rétrocompatibilité avec Cloud Datastore. Avec Firestore en mode Datastore, vous pouvez accéder à la couche de stockage améliorée de Cloud Firestore, tout en conservant le comportement du système Datastore. Firestore en mode Datastore supprime les limitations suivantes de Cloud Datastore :

  • Les requêtes ne sont plus cohérentes à terme. Elles sont fortement cohérentes, sauf si vous demandez explicitement une cohérence à terme.
  • Les requêtes dans les transactions n'ont plus besoin d'être des requêtes ascendantes.
  • Les transactions ne sont plus limitées à 25 groupes d'entités.
  • Les écritures dans un groupe d'entités ne sont plus limitées à 1 par seconde.

Pour en savoir plus sur le mode Datastore, consultez la page Firestore en mode Datastore.

Depuis juin 2021, les migrations de Cloud Datastore vers Firestore en mode Datastore ont commencé. Les migrations commencent par des bases de données à très faible trafic et s'étendront aux bases de données à trafic plus élevé au cours des prochains mois.

Passer automatiquement à Firestore en mode Datastore

Si vous gérez une application qui utilise Cloud Datastore, vous n'avez pas besoin de mettre à jour votre code d'application. Nous vous informerons du calendrier de la mise à niveau de votre application vers Firestore en mode Datastore. La mise à niveau ne nécessite pas de temps d'arrêt.

Si vous avez d'autres questions concernant la procédure de mise à niveau automatique, contactez l’un de nos canaux d'assistance.

Étapes de mise à niveau

De manière générale, nous suivons ce processus pour mettre à niveau votre base de données Cloud Datastore vers Firestore en mode Datastore. Ce processus ne nécessite pas de temps d'arrêt des applications:

  1. Ajoutez une instance dupliquée de données Cloud Firestore en mode Datastore à votre base de données Cloud Datastore existante. Opérations d'écriture d'entités en double dans Firestore de manière asynchrone en mode Datastore.

  2. Copier des données existantes et des entrées d'index depuis Cloud Datastore vers Firestore en mode Datastore Une fois les données copiées, vérifiez les données.

  3. Redirigez les lectures d'entités directement vers Cloud Firestore en mode Datastore. Redirigez d'abord les lectures cohérentes à terme, puis les lectures fortement cohérentes.

  4. Redirigez les écritures d'entités et les lectures transactionnelles directement vers Firestore en mode Datastore.

Ce processus comporte les étapes suivantes.

1. Appliquer des écritures de manière synchrone

Au cours de cette étape, les écritures sont appliquées de manière synchrone à Cloud Datastore: les écritures ne seront transmises que lorsque toutes les modifications apportées aux entités et aux index auront été appliquées à au moins une instance dupliquée. Cela simule le comportement de Firestore en mode Datastore qui applique également les écritures de manière synchrone (et diffère du comportement par défaut de Cloud Datastore, dans lequel les écritures sont appliquées de manière asynchrone après un commit).

Cette étape permet de mettre en évidence tout impact sur la latence des applications synchrones dans Firestore en mode Datastore avant la mise à niveau. L'application synchrone des écritures se poursuit pendant et après la migration.

Les bases de données ayant très peu d'activité ignorent cette étape. Pour déterminer si cette étape a été incluse dans la mise à niveau de votre base de données, examinez les journaux de l'étape APPLY_WRITES_SYNCHRONOUSLY.

2. Copier et valider

Cette étape représente le début de la migration. Il présente une instance dupliquée Cloud Firestore en mode Datastore et effectue les étapes suivantes:

  1. Journal

    Les opérations d'écriture d'entités dans Cloud Datastore commencent également à passer par un canal secondaire vers l'instance dupliquée Firestore en mode Datastore. Cela se produit dans le système de réplication existant de Cloud Datastore. Ces opérations d'écriture n'affectent pas la latence en écriture. L'instance dupliquée Firestore en mode Datastore met ces opérations d'écriture en mémoire tampon pour les appliquer après l'étape de copie.

  2. Copier

    Dans l'instance dupliquée Firestore en mode Datastore, créez une copie hors connexion des entrées de données et d'index existantes. L'étape de copie n'a pas d'incidence sur les opérations Cloud Datastore. Cette étape peut durer plusieurs jours.

  3. Drain Journal

    Appliquez les écritures de l'étape du journal au-dessus des données à partir de la copie hors connexion.

  4. Vérifier les données

    Vérifiez à nouveau les données dans Firestore en mode Datastore en les comparant aux données de Cloud Datastore.

3. Rediriger les lectures cohérentes à terme

Diffusez les lectures cohérentes à terme (requêtes sans filtre d'ancêtre) de Firestore en mode Datastore. La sémantique Cloud Datastore pour les lectures s'applique toujours à ce stade :

  • Les requêtes ascendantes sont fortement cohérentes.
  • Les requêtes non ascendantes sont cohérentes à terme.
  • Les recherches sont fortement cohérentes (sauf celles explicitement configurées pour la cohérence à terme).

Firestore en mode Datastore continue d'agir en tant qu'instance dupliquée de vos données Cloud Datastore.

4. Rediriger les lectures à cohérence forte

Diffusez des lectures fortement cohérentes (non transactionnelles) à partir de Firestore en mode Datastore. Notez que la sémantique de Cloud Datastore pour les lectures s'applique toujours. Firestore s'appuie toujours sur Cloud Datastore pour garantir que les lectures fortement cohérentes sont à jour, même si elles proviennent désormais directement de Firestore.

5. Rediriger les écritures

Redirigez les écritures d'entité et les lectures transactionnelles vers Firestore en mode Datastore. Les modifications simultanées apportées à une même entité continuent de provoquer l'annulation des transactions. Les modifications simultanées apportées aux différentes entités au sein d'un même groupe d'entités n'entraînent plus l'annulation des transactions.

Au début de cette étape, Firestore en mode Datastore s'appuie toujours sur Cloud Datastore pour garantir qu'il est à jour avant chaque écriture. Après une vérification finale qui garantit que toutes les écritures précédentes sont appliquées, Firestore en mode Datastore arrête de consulter Cloud Datastore.

6. Migration terminée

La sémantique de Firestore en mode Datastore pour les lectures s'applique désormais. Toutes les requêtes sont fortement cohérentes.

Les tarifs restent les mêmes, mais votre facturation répertorie désormais les SKU Firestore. La page "Quotas" d'App Engine affiche l'utilisation de Firestore au lieu de Cloud Datastore.

Transactions

Les bases de données Cloud Datastore utilisent la simultanéité positive pour les transactions dans Firestore en mode Datastore. La simultanéité optimiste permet de préserver les comportements existants des transactions dans Cloud Datastore.

Certaines bases de données migrées précédemment avec très peu d'activités ont été migrées avec des verrous pessimistes pour les transactions en mode Firestore en mode Datastore au lieu de la simultanéité optimiste.

Pour vérifier le mode de simultanéité de votre base de données pendant ou après la migration, inspectez les journaux de l'étape PREPARE.

Journalisation et notifications de progression

Le processus de mise à niveau utilise Cloud Logging pour publier les mises à jour de la progression. Vous pouvez afficher les journaux à l'aide de l'explorateur de journaux, de l'API Cloud Logging ou du SDK Cloud.

Les mises à jour sont publiées dans deux journaux sous le nom du service de journalisation datastore.googleapis.com:

Nom du journal Ressource surveillée Charge utile
migration_state base_de_données_datastoree type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress base_de_données_datastoree type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

Le journal "migration_state" est mis à jour lorsque l'état général de la mise à niveau change (RUNNING et COMPLETE).

Le journal migration_progress est mis à jour chaque fois que la mise à niveau passe à une nouvelle étape (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS et REDIRECT_WRITES). applicables).

Afin de recevoir des notifications lors de la mise à niveau, vous pouvez créer des métriques basées sur les journaux à partir des deux journaux et créer des alertes à partir de ces métriques.

Métriques Cloud Monitoring

Les métriques Cloud Monitoring disponibles pour votre base de données Datastore restent les mêmes tout au long du processus de mise à niveau. Consultez les métriques Datastore disponibles.