Exporter et importer des données

Vous pouvez utiliser le service d'exportation et d'importation géré de Cloud Firestore pour récupérer d'une suppression accidentelle de données et exporter des données pour un traitement hors ligne. Vous pouvez exporter tous les documents ou uniquement des collections spécifiques. De même, vous pouvez importer toutes les données d'un export ou uniquement des collections spécifiques. Les données exportées depuis une base de données Cloud Firestore peuvent être importées dans une autre base de données Cloud Firestore. Vous pouvez également charger les exportations Nuage FireStore dans BigQuery .

Cette page décrit comment exporter et importer des documents cloud FireStore utilisant le service d'exportation et d' importation géré et Cloud Storage . Le service d'exportation et d' importation géré Nuage Firestore est disponible à travers le gcloud outil de ligne de commande et l'API cloud Firestore ( REST , RPC ).

Avant que tu commences

Avant de pouvoir utiliser le service d'exportation et d'importation géré, vous devez effectuer les tâches suivantes :

  1. Activez la facturation pour votre projet Google Cloud. Seuls les projets Google Cloud pour lesquels la facturation est activée peuvent utiliser les fonctionnalités d'exportation et d'importation.
  2. Créer un seau Cloud Storage pour votre projet dans un endroit près de l' emplacement de votre base de données cloud Firestore . Vous ne pouvez pas utiliser un compartiment de paiement du demandeur pour les opérations d'exportation et d'importation.
  3. Assurez-vous que votre compte dispose des autorisations nécessaires pour Cloud Firestore et Cloud Storage. Si vous êtes le propriétaire du projet, votre compte dispose des autorisations requises. Sinon, les rôles suivants accordent les autorisations nécessaires pour les opérations d'exportation et d'importation et pour l'accès à Cloud Storage :

    • Rôles Cloud FireStore: Owner , Cloud Datastore Owner ou Cloud Datastore Import Export Admin
    • Cloud rôles de Storage Admin stockage: Owner ou Storage Admin

Autorisations de compte de service par défaut

Chaque projet Google Cloud crée automatiquement un compte de service par défaut nommé PROJECT_ID @appspot.gserviceaccount.com . Les opérations d'exportation et d'importation utilisent ce compte de service pour autoriser les opérations Cloud Storage.

Le compte de service par défaut de votre projet nécessite un accès au bucket Cloud Storage utilisé dans une opération d'exportation ou d'importation. Si votre seau Cloud Storage est dans le même projet que votre base de données cloud Firestore, le compte de service par défaut a accès au seau par défaut.

Si le bucket Cloud Storage se trouve dans un autre projet, vous devez accorder au compte de service par défaut l'accès au bucket Cloud Storage.

Le compte de service a besoin de l' Storage Admin rôle pour le seau Cloud Storage à utiliser pour l'exportation ou opération d' importation.

Si vous désactivez ou supprimez votre compte de service par défaut App Engine, votre application App Engine perdra l'accès à votre base de données Cloud Firestore. Si vous avez désactivé votre compte de service App Engine, vous pouvez le réactiver, voir permettant un compte de service . Si vous avez supprimé votre compte de service App Engine dans les 30 derniers jours, vous pouvez restaurer votre compte de service, consultez Annulation de la suppression d' un compte de service .

Mettre en place gcloud pour votre projet

Vous pouvez lancer des opérations d'importation et d' exportation via la console Google Cloud Platform ou gcloud outil de ligne de commande. Pour utiliser gcloud , mettre en place l'outil de ligne de commande et de connexion à votre projet dans l' une des façons suivantes:

Exporter des données

Une opération d'exportation copie les documents de votre base de données vers un ensemble de fichiers dans un bucket Cloud Storage. Notez qu'une exportation n'est pas un instantané de base de données exact pris à l'heure de début de l'exportation. Une exportation peut inclure des modifications apportées pendant l'exécution de l'opération.

Exporter tous les documents

Google Cloud Console

  1. Aller à la page Cloud Firestore Import / Export dans la plate - forme Google Cloud Console.

    Aller à la page Importer/Exporter

  2. Cliquez sur Exporter.

  3. Cliquez sur l'option toute la base de données d' exportation.

  4. Ci - dessous Choisissez Destination, entrez le nom d'un seau Cloud Storage ou utilisez le bouton Parcourir pour sélectionner un seau.

  5. Cliquez sur Exporter.

Les rendements de la console à la page Import / Export. Si l'opération démarre avec succès, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Utilisez l' firestore export commande pour exporter tous les documents dans votre base de données, en remplaçant [BUCKET_NAME] avec le nom de votre seau Cloud Storage. Ajouter le --async drapeau pour empêcher le gcloud outil d'attente pour l'opération complète.

gcloud firestore export gs://[BUCKET_NAME]

Vous pouvez organiser vos exportations en ajoutant un préfixe de fichier après le nom du seau, par exemple, BUCKET_NAME/my-exports-folder/export-name . Si vous ne fournissez pas de préfixe de fichier, le service d'exportation géré en crée un en fonction de l'horodatage actuel.

Une fois que vous démarrez une opération d'exportation, la fermeture du terminal ne supprime pas l'opération, voir annuler une opération .

Exporter des collections spécifiques

Google Cloud Console

  1. Aller à la page Cloud Firestore Import / Export dans la plate - forme Google Cloud Console.

    Aller à la page Importer/Exporter

  2. Cliquez sur Exporter.

  3. Cliquez sur l'option Exporter un ou plusieurs groupes de collecte. Utilisez le menu déroulant pour sélectionner un ou plusieurs groupes de collecte.

  4. Ci - dessous Choisissez Destination, entrez le nom d'un seau Cloud Storage ou utilisez le bouton Parcourir pour sélectionner un seau.

  5. Cliquez sur Exporter.

Les rendements de la console à la page Import / Export. Si l'opération démarre avec succès, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Pour les groupes de collecte de spécifiques à l'exportation, utilisez le --collection-ids drapeau. L'opération n'exporte que les groupes de collections avec les ID de collection donnés. Le groupe de collections inclut toutes les collections et sous-collections (à n'importe quel chemin) avec l'ID de collection spécifié.

gcloud firestore export gs://[BUCKET_NAME] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

Importer des données

Une fois que vous avez exporté des fichiers dans Cloud Storage, vous pouvez réimporter les documents de ces fichiers dans votre projet ou dans un autre projet. Notez les points suivants concernant les opérations d'importation :

  • Lorsque vous importez des données, les index requis sont mis à jour à l'aide des définitions d'index actuelles de votre base de données. Une exportation ne contient pas de définitions d'index.

  • Les importations n'affectent pas de nouveaux ID de document. Les importations utilisent les ID capturés au moment de l'exportation. Lorsqu'un document est importé, son ID est réservé pour éviter les collisions d'ID. Si un document avec le même ID existe déjà, l'importation écrase le document existant.

  • Si un document de votre base de données n'est pas affecté par une importation, il restera dans votre base de données après l'importation.

  • Les opérations d'importation ne déclenchent pas les fonctions Cloud. Auditeurs instantanés font recevoir des informations relatives aux opérations d'importation.

Importer tous les documents d'une exportation

Google Cloud Console

  1. Aller à la page Cloud Firestore Import / Export dans la plate - forme Google Cloud Console.

    Aller à la page Importer/Exporter

  2. Cliquez sur Importer.

  3. Dans le champ Nom du fichier, entrez le nom d'un .overall_export_metadata fichier à partir d' une opération d'exportation terminée. Vous pouvez utiliser le bouton Parcourir pour vous aider à sélectionner le fichier.

  4. Cliquez sur Importer.

Les rendements de la console à la page Import / Export. Si l'opération démarre avec succès, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Utilisez l' firestore import commande aux documents d'importation d'une opération d'exportation précédente.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

[BUCKET_NAME] et [EXPORT_PREFIX] le point à l'emplacement de vos fichiers d'exportation. Par exemple:

gcloud firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

Vous pouvez confirmer l'emplacement de vos fichiers d'exportation dans le navigateur Cloud Storage de la console Google Cloud Platform :

Ouvrir le navigateur Cloud Storage

Une fois que vous démarrez une opération d'importation, la fermeture du terminal ne supprime pas l'opération, voir annuler une opération .

Importer des collections spécifiques

Google Cloud Console

Vous ne pouvez pas sélectionner des collections spécifiques dans la console. Utilisez gcloud à la place.

gcloud

Pour importer des groupes de collecte spécifique à partir d' un ensemble de fichiers d'exportation, utilisez le --collection-ids drapeau. L'opération importe uniquement les groupes de collection avec les ID de collection donnés. Le groupe de collections inclut toutes les collections et sous-collections (à n'importe quel chemin) avec l'ID de collection spécifié.

Seule une exportation de groupes de collecte spécifiques prend en charge une importation de groupes de collecte spécifiques. Vous ne pouvez pas importer des collections spécifiques à partir d'une exportation de tous les documents.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

Gestion des opérations d'export et d'import

Après avoir démarré une opération d'exportation ou d'importation, Cloud Firestore attribue un nom unique à l'opération. Vous pouvez utiliser le nom de l'opération pour supprimer, annuler ou vérifier l'état de l'opération.

Les noms d'opération sont préfixées avec des projects/[PROJECT_ID]/databases/(default)/operations/ de projects/[PROJECT_ID]/databases/(default)/operations/ , par exemple:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Cependant, vous pouvez laisser le préfixe en spécifiant un nom d'opération pour le describe , cancel et delete des commandes.

Lister toutes les opérations d'exportation et d'importation

Google Cloud Console

Vous pouvez consulter la liste des opérations d'exportation et d' importation récentes dans le Cloud Firestore Importer / Exporter de la Google Cloud Platform Console.

Aller à la page Importer/Exporter

gcloud

Utilisez la operations list de commande pour voir tous en cours d' exécution et a récemment terminé les opérations d'exportation et d' importation:

gcloud firestore operations list

Vérifier l'état de fonctionnement

Google Cloud Console

Vous pouvez afficher l'état d'une exportation récente opération d'importation ou dans la page Cloud Firestore Import / Export de la plate - forme Google Cloud Console.

Aller à la page Importer/Exporter

gcloud

Utilisez les operations describe commande pour afficher l'état d'une exportation ou opération d' importation.

gcloud firestore operations describe [OPERATION_NAME]

Estimer le temps de réalisation

Une demande de statut d'une opération retourne longue durée les mesures workEstimated et workCompleted . Chacune de ces métriques est renvoyée à la fois en nombre d'octets et en nombre d'entités :

  • workEstimated indique le nombre total estimé d'octets et les documents d' une opération traitera.

  • workCompleted montre le nombre d'octets et documents déjà traités. Après les finalise de fonctionnement, la valeur indique le nombre total d'octets et les documents qui ont été effectivement traités, ce qui pourrait être supérieure à la valeur de workEstimated .

Diviser workCompleted par workEstimated pour une estimation de progression approximative. Cette estimation peut être inexacte, car elle dépend de la collecte tardive des statistiques.

Annuler une opération

Google Cloud Console

Vous pouvez annuler une opération d' exportation ou d' importation en cours d' exécution dans la page Cloud Firestore Import / Export de la plate - forme Google Cloud Console.

Aller à la page Importer/Exporter

Dans le tableau des importations et des exportations récentes, les opérations en cours d' exécution comprennent un bouton Annuler dans la colonne Terminé. Cliquez sur le bouton Annuler pour arrêter l'opération. Le bouton devient un message d' annulation puis qu'annulées lorsque l'opération s'arrête complètement.

gcloud

Utilisez les operations cancel d' operations cancel la commande pour arrêter une opération en cours:

gcloud firestore operations cancel [OPERATION_NAME]

L'annulation d'une opération en cours n'annule pas l'opération. Une opération d'exportation annulée laissera les documents déjà exportés dans Cloud Storage, et une opération d'importation annulée laissera en place les mises à jour déjà apportées à votre base de données. Vous ne pouvez pas importer une exportation partiellement terminée.

Supprimer une opération

Les gcloud firestore operations delete commande pour supprimer une opération dans la liste des opérations récentes. Cette commande ne supprimera pas les fichiers d'exportation de Cloud Storage.

gcloud firestore operations delete [OPERATION_NAME]

Facturation et tarification des opérations d'exportation et d'importation

Vous devez activer la facturation pour votre projet Google Cloud avant d'utiliser le service d'exportation et d'importation géré. Les opérations d'exportation et d' importation sont facturés pour le document lit et écrit sur les tarifs indiqués dans la tarification Nuage Firestore .

Les coûts des opérations d'exportation et d' importation ne comptent pas dans votre limite de dépenses . Les opérations d'exportation ou d' importation ne déclencheront pas vos budgets Google Cloud alertes avant l'achèvement. De même, lit et écritures effectuées au cours d' une opération d'exportation ou l' importation sont appliqués à votre quota quotidien après l'opération est terminée. Les opérations d'exportation et d'importation n'affecteront pas l'utilisation indiquée dans la section d'utilisation de la console.

Affichage des coûts d'exportation et d'importation

L' exportation et les opérations d'importation appliquent la goog-firestoremanaged:exportimport étiquette aux opérations facturées. Dans les rapports de facturation - Cloud la page , vous pouvez utiliser cette étiquette pour les frais de vue liés aux opérations d'importation et d' exportation:

Accédez à l'étiquette goog-firestoremanaged à partir du menu des filtres.

Exporter vers BigQuery

Vous pouvez charger des données à partir d' une exportation Nuage Firestore dans BigQuery, mais seulement si vous avez spécifié une collection-ids filtre. Voir Chargement des données provenant des exportations Nuage FireStore .

Limite de colonnes BigQuery

BigQuery impose une limite de 10 000 colonnes par table. Les opérations d'exportation Cloud Firestore génèrent un schéma de table BigQuery pour chaque groupe de collecte. Dans ce schéma, chaque nom de champ unique au sein d'un groupe de collections devient une colonne de schéma.

Si le schéma BigQuery d'un groupe de collections dépasse 10 000 colonnes, l'opération d'exportation Cloud Firestore tente de rester sous la limite de colonnes en traitant les champs de carte comme des octets. Si cette conversion ramène le nombre de colonnes en dessous de 10 000, vous pouvez charger les données dans BigQuery, mais vous ne pouvez pas interroger les sous-champs dans les champs de la carte. Si le nombre de colonnes dépasse toujours 10 000, l'opération d'exportation ne génère pas de schéma BigQuery pour le groupe de collecte et vous ne pouvez pas charger ses données dans BigQuery.

Format d'exportation et fichiers de métadonnées

La sortie d'un export géré utilise le format de journal LevelDB .

Fichiers de métadonnées

Une opération d'exportation crée un fichier de métadonnées pour chaque groupe de collections que vous spécifiez. Fichiers de métadonnées sont généralement nommés ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata .

Les fichiers de métadonnées sont des tampons de protocole et vous pouvez les décoder avec le protoc compilateur de protocole . Par exemple, vous pouvez décoder un fichier de métadonnées pour déterminer les groupes de collections que contiennent les fichiers d'exportation :

protoc --decode_raw < export0.export_metadata