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 la 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.
  • Les transactions utilisent désormais des verrouillages pessimistes plutôt que la simultanéité optimiste.

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

À partir de 2021, Google Cloud mettra progressivement à niveau les bases de données Cloud Datastore existantes vers Firestore en mode Datastore.

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 la mise à niveau

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

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

  2. Copier les données et entrées d'index existantes de Cloud Datastore vers Firestore en mode Datastore. Une fois la copie terminée, 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 utilise les étapes suivantes.

1. Copier et valider

Cette étape présente une instance dupliquée 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 de vos données et entrées 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 de journalisation en plus des données 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.

2. 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.

3. Rediriger les lectures fortement cohérentes

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.

4. Rediriger les écritures

Redirigez les opérations d'écriture et de lecture transactionnelle vers Firestore en mode Datastore. Les modifications simultanées apportées à la même entité continuent d'entraîner des abandons de transaction. Les modifications simultanées de différentes entités au sein d'un même groupe d'entités n'entraînent plus l'abandon 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.

5. 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 identiques, mais votre facturation répertorie désormais les SKU Firestore. La page "Quotas" d'App Engine affiche désormais l'utilisation de Firestore au lieu de Cloud Datastore.

Notifications de journalisation et de progression

Le processus de mise à niveau utilise Cloud Logging pour publier des informations sur la progression. Pour afficher les journaux, utilisez l'Explorateur de journaux, l'API Cloud Logging ou le 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
état_migration datastore_database (base de données) type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
progression_migration datastore_database (base de données) type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent.

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

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

Pour recevoir des notifications au fur et à mesure de la mise à niveau, vous pouvez créer des métriques basées sur les journaux basées sur les deux journaux et créer des alertes basées sur ces métriques.

Tester une application existante

Procédez comme suit pour tester si le comportement d'une application existante utilisant Cloud Datastore change avec Firestore en mode Datastore :

  1. Créez un projet. Dans ce projet, créez une base de données Cloud Firestore en mode Datastore.
  2. À l'aide du service d'exportation géré, exportez certaines des données de votre application vers Cloud Storage.
  3. À l'aide du service d'importation géré, importez les données de votre application dans le nouveau projet.
  4. Copiez la logique d'application que vous souhaitez tester dans le nouveau projet ou simulez le comportement de l'application par rapport au nouveau projet.

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 Cloud Datastore disponibles.