Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Экспорт и импорт данных

Вы можете использовать управляемую службу экспорта и импорта Cloud Firestore для восстановления после случайного удаления данных и экспорта данных для автономной обработки. Вы можете экспортировать все документы или только определенные коллекции. Точно так же вы можете импортировать все данные из экспорта или только определенных коллекций. Данные, экспортированные из одной базы данных Cloud Firestore, можно импортировать в другую базу данных Cloud Firestore. Вы также можете загрузить экспорт Облако Firestore Into BigQuery .

На этой странице описывается , как экспортировать и импортировать облако Firestore документов с помощью управляемых услуг экспорта и импорта и Cloud Storage . Управляемая экспорта и импорта услуг Cloud Firestore доступна через gcloud инструмент командной строки и Cloud Firestore API ( REST , RPC ).

Прежде чем вы начнете

Прежде чем вы сможете использовать службу управляемого экспорта и импорта, вы должны выполнить следующие задачи:

  1. Включите выставление счетов для вашего проекта Google Cloud. Только проекты Google Cloud с включенным биллингом могут использовать функцию экспорта и импорта.
  2. Создайте ведро для проекта Cloud Storage в месте вблизи вашего местоположения базы данных Cloud Firestore . Вы не можете использовать корзину "Запрашивающий платит" для операций экспорта и импорта.
  3. Убедитесь, что у вашей учетной записи есть необходимые разрешения для Cloud Firestore и Cloud Storage. Если вы являетесь владельцем проекта, ваша учетная запись имеет необходимые разрешения. В противном случае следующие роли предоставляют необходимые разрешения для операций экспорта и импорта, а также для доступа к облачному хранилищу:

Разрешения учетной записи службы по умолчанию

Каждый проект Google Cloud автоматически создает учетную запись услуг по умолчанию с именем PROJECT_ID @appspot.gserviceaccount.com . Операции экспорта и импорта используют эту учетную запись службы для авторизации операций облачного хранилища.

Учетной записи службы вашего проекта по умолчанию требуется доступ к корзине Cloud Storage, используемой в операции экспорта или импорта. Если ведро Облака хранения в том же проекте базы данных Cloud Firestore, то учетная запись службы по умолчанию имеет доступ к ведру по умолчанию.

Если сегмент облачного хранилища находится в другом проекте, вы должны предоставить сервисной учетной записи по умолчанию доступ к сегменту облачного хранилища.

Учетная запись службы нуждается в Storage Admin роль ведро Cloud Storage , которые будут использоваться для операции экспорта или импорта.

Если вы отключите или удалите учетную запись службы App Engine по умолчанию, ваше приложение App Engine потеряет доступ к базе данных Cloud Firestore. Если вы отключили учетную запись службы App Engine, вы можете включить его, см позволяет учетной записи службы . Если вы удалили учетную запись службы App Engine в течение последних 30 дней, вы можете восстановить учетную запись службы, см отмены удаления учетной записи службы .

Настройка gcloud для вашего проекта

Вы можете инициировать операции импорта и экспорта через Google Cloud Platform Console или gcloud инструмент командной строки. Для использования gcloud , настроить инструмент командной строки и подключиться к вашему проекту в одном из следующих способов:

Экспорт данных

Операция экспорта копирует документы из вашей базы данных в набор файлов в сегменте Cloud Storage. Обратите внимание, что экспорт - это не точный снимок базы данных, сделанный во время начала экспорта. Экспорт может включать изменения, внесенные во время выполнения операции.

Экспорт всех документов

Консоль Google Cloud

  1. Перейти на страницу Облако Firestore Импорт / Экспорт в Google Cloud Platform Console.

    Перейдите на страницу импорта / экспорта

  2. Нажмите кнопку Экспорт.

  3. Нажмите весь параметр базы данных экспорта.

  4. Ниже Выберите пункт назначения, введите имя ведре Cloud Storage или используйте кнопку Обзор , чтобы выбрать ведро.

  5. Нажмите кнопку Экспорт.

Консоль возвращается на страницу Импорт / Экспорт. Если операция успешно запускается, страница добавляет запись на страницу недавнего импорта и экспорта. В случае сбоя на странице отображается сообщение об ошибке.

gcloud

Используйте firestore export команду , чтобы экспортировать все документы в базе данных, заменяя [BUCKET_NAME] с именем вашего ведра Cloud Storage. Добавьте --async флаг , чтобы предотвратить gcloud инструмент от ожидания для завершения операции.

gcloud firestore export gs://[BUCKET_NAME]

Вы можете организовать экспорт, добавив префикс файла после имени ковша, например, BUCKET_NAME/my-exports-folder/export-name . Если вы не укажете префикс файла, служба управляемого экспорта создаст его на основе текущей метки времени.

После запуска операции экспорта, закрытие терминала не отменяет операцию, см отменить операцию .

Экспорт конкретных коллекций

Консоль Google Cloud

  1. Перейти на страницу Облако Firestore Импорт / Экспорт в Google Cloud Platform Console.

    Перейдите на страницу импорта / экспорта

  2. Нажмите кнопку Экспорт.

  3. Нажмите Экспорт одну или несколько групп по сбору вариант. Используйте раскрывающееся меню, чтобы выбрать одну или несколько групп сбора.

  4. Ниже Выберите пункт назначения, введите имя ведре Cloud Storage или используйте кнопку Обзор , чтобы выбрать ведро.

  5. Нажмите кнопку Экспорт.

Консоль возвращается на страницу Импорт / Экспорт. Если операция успешно запускается, страница добавляет запись на страницу недавнего импорта и экспорта. В случае сбоя на странице отображается сообщение об ошибке.

gcloud

Для экспорта конкретных групп по сбору, используйте --collection-ids флаг. Операция экспортирует только группы коллекций с заданными идентификаторами коллекций. В группу коллекций входят все коллекции и вложенные коллекции (по любому пути) с указанным идентификатором коллекции.

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

Импортировать данные

После того, как у вас есть файлы экспорта в облачном хранилище, вы можете импортировать документы из этих файлов обратно в свой проект или в другой проект. Обратите внимание на следующие моменты об операциях импорта:

  • Когда вы импортируете данные, необходимые индексы обновляются с использованием текущих определений индексов вашей базы данных. Экспорт не содержит определений индексов.

  • При импорте не назначаются новые идентификаторы документов. При импорте используются идентификаторы, полученные во время экспорта. Во время импорта документа его идентификатор зарезервирован для предотвращения конфликтов идентификаторов. Если документ с таким идентификатором уже существует, при импорте существующий документ перезаписывается.

  • Если на документ в вашей базе данных не влияет импорт, он останется в вашей базе данных после импорта.

  • Операции импорта не запускают облачные функции. Мгновенные слушатели делают получать обновления , связанные с импортными операциями.

Импортировать все документы из экспорта

Консоль Google Cloud

  1. Перейти на страницу Облако Firestore Импорт / Экспорт в Google Cloud Platform Console.

    Перейдите на страницу импорта / экспорта

  2. Нажмите кнопку Импорт.

  3. В поле Имя файла введите имя файла в .overall_export_metadata файл с завершенной операции экспорта. Вы можете использовать кнопку Обзор , чтобы помочь вам выбрать файл.

  4. Нажмите кнопку Импорт.

Консоль возвращается на страницу Импорт / Экспорт. Если операция успешно запускается, страница добавляет запись на страницу недавнего импорта и экспорта. В случае сбоя на странице отображается сообщение об ошибке.

gcloud

Используйте firestore import команду для импорта документов из предыдущей операции экспорта.

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

где [BUCKET_NAME] и [EXPORT_PREFIX] указывают на местоположение ваших файлов экспорта. Например:

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

Вы можете подтвердить расположение файлов экспорта в браузере Cloud Storage в консоли Google Cloud Platform:

Откройте браузер Cloud Storage

После запуска операции импорта, закрытие терминала не отменяет операцию, см отменить операцию .

Импортировать определенные коллекции

Консоль Google Cloud

Вы не можете выбрать определенные коллекции в консоли. Используйте gcloud вместо этого.

gcloud

Для импорта групп сбора конкретного из набора файлов экспорт, используйте --collection-ids флаг. Операция импортирует только группы коллекций с заданными идентификаторами коллекций. В группу коллекций входят все коллекции и вложенные коллекции (по любому пути) с указанным идентификатором коллекции.

Только экспорт определенных групп сбора поддерживает импорт определенных групп сбора. Вы не можете импортировать определенные коллекции из экспорта всех документов.

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

Управление экспортно-импортными операциями

После запуска операции экспорта или импорта Cloud Firestore присваивает операции уникальное имя. Вы можете использовать имя операции для удаления, отмены или проверки состояния операции.

Имена операций с префиксом projects/[PROJECT_ID]/databases/(default)/operations/ по projects/[PROJECT_ID]/databases/(default)/operations/ , например:

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

Тем не менее, вы можете оставить префикс при задании имени операции для describe , cancel и delete команды.

Список всех операций экспорта и импорта

Консоль Google Cloud

Вы можете просмотреть список последних экспортных и импортных операций на странице Облако Firestore Импорт / Экспорт в Google Cloud Platform Console.

Перейдите на страницу импорта / экспорта

gcloud

Используйте operations list команды , чтобы увидеть все запущенные и недавно завершенные операции экспорта и импорта:

gcloud firestore operations list

Проверить статус работы

Консоль Google Cloud

Вы можете просмотреть статус недавнего экспорта или импорта на странице Облако Firestore Импорт / Экспорт в Google Cloud Platform Console.

Перейдите на страницу импорта / экспорта

gcloud

Используйте operations describe команду , чтобы показать статус операции экспорта или импорта.

gcloud firestore operations describe [OPERATION_NAME]

Оцените время завершения

Запрос о статусе продолжительной операции возвращает метрику workEstimated и workCompleted . Каждая из этих метрик возвращается как в байтах, так и в количестве сущностей:

  • workEstimated показывает примерное общее количество байтов и документов операция будет обрабатывать.

  • workCompleted показывает количество байтов и обрабатываемых документов до сих пор. После завершения операции, значение показывает общее число байт и документов , которые фактически были обработаны, что может быть больше , чем значение workEstimated .

Разделить workCompleted по workEstimated для оценки прогресса шероховатой. Эта оценка может быть неточной, поскольку зависит от отложенного сбора статистики.

Отменить операцию

Консоль Google Cloud

Вы можете отменить бегущий экспорт или импорт на странице Облака Firestore Импорта / Экспорта в Google Cloud Platform Console.

Перейдите на страницу импорта / экспорта

В Recent импорта и экспорта таблицы, в настоящее время работает операции включают в себя кнопку Отмена в завершающем колонке. Нажмите кнопку Отмена , чтобы остановить операцию. Кнопка изменения в Canceling сообщения , а затем Отменяется , когда операция полностью прекращается.

gcloud

Используйте operations cancel команду , чтобы остановить операцию в процессе выполнения:

gcloud firestore operations cancel [OPERATION_NAME]

Отмена текущей операции не отменяет ее. Отмененная операция экспорта оставит документы, уже экспортированные в облачное хранилище, а отмененная операция импорта оставит на месте обновления, уже внесенные в вашу базу данных. Вы не можете импортировать частично завершенный экспорт.

Удалить операцию

Используйте gcloud firestore operations delete команды , чтобы удалить операцию из списка последних операций. Эта команда не удаляет файлы экспорта из облачного хранилища.

gcloud firestore operations delete [OPERATION_NAME]

Выставление счетов и ценообразование для экспортных и импортных операций

Перед использованием службы управляемого экспорта и импорта необходимо включить выставление счетов для своего проекта Google Cloud. Экспорт и импорт заряжается за документ читает и пишет по ставкам , перечисленных в облачных Firestore ценах .

Стоимость экспортных и импортных операций не учитываются в вашем расходного лимита . Операции экспорта или импорта не будет приводить к показу вашего Google Cloud бюджета оповещения до завершения. Точно так же, как чтение и запись , выполняемая во время операции экспорта или импорта применяется к вашей ежедневной квоте после завершения операции. Операции экспорта и импорта не повлияют на использование, показанное в разделе использования консоли.

Просмотр стоимости экспорта и импорта

Экспорт и импорт операций применять goog-firestoremanaged:exportimport метку выставленных счетов операций. В странице отчетов Платежной Cloud , вы можете использовать эту метку затрат просмотреть связанные с импортными и экспортными операциями:

Получите доступ к ярлыку goog-firestoremanaged из меню фильтров.

Экспорт в BigQuery

Вы можете загрузить данные из экспорта Облака Firestore в BigQuery, но только если вы указали collection-ids фильтра. См Загрузка данных от экспорта Облако Firestore .

Ограничение столбца BigQuery

BigQuery устанавливает ограничение в 10 000 столбцов в таблице. Операции экспорта Cloud Firestore создают схему таблицы BigQuery для каждой группы сбора. В этой схеме каждое уникальное имя поля в группе сбора становится столбцом схемы.

Если схема BigQuery группы сбора превышает 10 000 столбцов, операция экспорта Cloud Firestore пытается не превышать ограничение по столбцам, обрабатывая поля карты как байты. Если в результате этого преобразования количество столбцов становится меньше 10 000, вы можете загрузить данные в BigQuery, но не можете запрашивать подполя в полях карты. Если количество столбцов по-прежнему превышает 10 000, операция экспорта не создает схему BigQuery для группы сбора, и вы не можете загрузить ее данные в BigQuery.

Формат экспорта и файлы метаданных

Выход управляемого экспорта использует формат журнал LevelDB .

Файлы метаданных

Операция экспорта создает файл метаданных для каждой указанной вами группы сбора. Файлы метаданных , как правило , с именем ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata .

Файлы метаданных буферы протокола , и вы можете расшифровать их с protoc составителя протокола . Например, вы можете декодировать файл метаданных, чтобы определить группы сбора, которые содержат файлы экспорта:

protoc --decode_raw < export0.export_metadata