Создание баз данных и управление ими

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

Использование в рамках бесплатного плана

Cloud Firestore предлагает бесплатный план, который позволяет начать работу без затрат.

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

Подготовка

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

  1. Если у вас ещё нет проекта Firebase, создайте его. Для этого в консоли Firebase нажмите Добавить проект и следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект Google Cloud.

  2. Назначьте подходящие роли Identity and Access Management, как описано в следующем разделе.

Необходимые роли

Чтобы создавать базы данных и управлять ими, вам нужна роль Owner или Datastore Owner в Identity and Access Management. Эти роли предоставляют необходимые разрешения.

Требуемые права доступа

Чтобы управлять базами данных, вам нужны следующие разрешения:

  • Создать базу данных: datastore.databases.create
  • Прочитать конфигурацию базы данных: datastore.databases.getMetadata
  • Настройте базу данных: datastore.databases.update
  • Удалить базу данных: datastore.databases.delete
  • Как клонировать базу данных: datastore.databases.clone

Создание базы данных

Чтобы создать базу данных Cloud Firestore, воспользуйтесь одним из следующих способов:

Консоль Firebase
  1. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  2. Нажмите Добавить базу данных.
  3. Выберите Enterprise edition. Нажмите Далее.
  4. Выберите Firestore в нативном режиме.
  5. Введите идентификатор базы данных.
  6. Выберите местоположение для базы данных. Нажмите Далее.
  7. Выберите, нужно ли включить или отключить обновления в реальном времени.

    Обновления в реальном времени позволяют вашей базе данных поддерживать onSnapshot слушателей. Эта функция включена по умолчанию для баз данных Enterprise в нативном режиме.

  8. Выберите режим запуска для устройства "Cloud Firestore Security Rules":

    Режим тестирования
    Подходит для начала работы с клиентскими библиотеками для мобильных устройств и веб-приложений, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом Защита данных.
    Производственный режим
    Запрещает все операции чтения и записи для мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (Node.js, Python, Java) по-прежнему могут получать доступ к базе данных.
  9. Нажмите Создать.
gcloud CLI

Используйте команду gcloud firestore databases create.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--enable-firestore-data-access \
--enable-realtime-updates

Замените следующее:

Идентификатор базы данных

Допустимые идентификаторы баз данных должны соответствовать следующим требованиям:

  • Содержит только буквы, цифры и дефисы (-).
  • Буквы должны быть строчными.
  • Первый символ должен быть буквой.
  • Последний символ должен быть буквой или цифрой.
  • Минимум 4 символа.
  • Длина – не более 63 символов.
  • Не должен быть UUID или напоминать его. Например, не используйте идентификатор f47ac10b-58cc-0372-8567-0e02b2c3d479.

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

Удалить защиту

Чтобы предотвратить случайное удаление базы данных, используйте защиту от удаления. Защита от удаления работает следующим образом:

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

Получение списка баз данных

Чтобы посмотреть список баз данных, воспользуйтесь одним из следующих способов:

Консоль Firebase
  1. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  2. Нажмите Cloud Firestore, чтобы посмотреть все базы данных проекта.
gcloud CLI

Чтобы посмотреть список всех баз данных в проекте, используйте команду gcloud firestore databases list.

gcloud firestore databases list

Посмотреть сведения о базе данных

Чтобы посмотреть сведения об одной базе данных, выполните одно из следующих действий:

Консоль Firebase
  1. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  2. Выберите базу данных из списка.
gcloud CLI

Используйте команду gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

Замените DATABASE_ID идентификатором базы данных.

Обновить конфигурацию базы данных

Чтобы изменить настройки конфигурации базы данных, используйте команду gcloud firestore databases update.

Используйте эту команду, чтобы изменить, включить или отключить защиту от удаления.

Как изменить настройки защиты от удаления

Чтобы включить защиту от удаления в базе данных, используйте команду gcloud firestore databases update с флагом --delete-protection. Пример:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection

Замените DATABASE_ID идентификатором базы данных.

Чтобы отключить защиту от удаления для базы данных, используйте команду gcloud firestore databases update с флагом --no-delete-protection. Пример:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

Замените DATABASE_ID идентификатором базы данных.

Как удалить базу данных

Чтобы удалить базу данных, используйте консоль или инструмент командной строки. За удаление базы данных плата не взимается.

Если для базы данных включена защита от удаления, сначала отключите ее.

Консоль Firebase
  1. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  2. Выберите базу данных, которую нужно удалить.
  3. Нажмите Ещё.
  4. Нажмите Удалить.
gcloud CLI

Используйте команду gcloud firestore databases delete.

gcloud firestore databases delete --database=DATABASE_ID

Замените DATABASE_ID идентификатором базы данных, которую нужно удалить.

Как клонировать базу данных

Вы можете клонировать существующую базу данных с выбранной временной меткой в новую базу данных:

  • Клонированная база данных – это новая база данных, которая будет создана в том же месте, что и исходная.

    Для создания клона Cloud Firestore использует данные восстановления на определенный момент времени (PITR) исходной базы данных. Клонированная база данных включает все данные и индексы.

  • По умолчанию клонированная база данных будет зашифрована так же, как и исходная, с использованием шифрования Google по умолчанию или шифрования CMEK. Вы можете указать другой тип шифрования или использовать другой ключ для шифрования CMEK.

  • Временная метка имеет детализацию в одну минуту и указывает на момент времени в прошлом, в периоде, определенном окном PITR:

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

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Databases (Базы данных).

    Перейти к базам данных

  2. В строке таблицы с базой данных, которую нужно клонировать, нажмите на значок с тремя точками Ещё. Нажмите Клонировать. Откроется диалоговое окно Клонировать.

  3. В диалоговом окне Создание клона укажите параметры для клонирования базы данных:

    1. В поле Укажите идентификатор копии введите идентификатор базы данных для новой копии. Этот идентификатор не должен быть связан с существующей базой данных.

    2. В поле Клонировать из выберите момент времени, который будет использоваться для клонирования. Выбранное время соответствует временной метке PITR с точностью до минуты.

  4. Нажмите Создать копию.

gcloud

Чтобы клонировать базу данных, используйте команду gcloud firestore databases clone:

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

Замените следующее:

Пример:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

Если вы хотите привязать некоторые теги при клонировании базы данных, используйте предыдущую команду с флагом --tags, который представляет собой необязательный список пар КЛЮЧ=ЗНАЧЕНИЕ тегов для привязки.

Пример:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2

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

  • use-source-encryption (по умолчанию) – использовать ту же конфигурацию шифрования, что и в исходной базе данных.
  • google-default-encryption – использовать стандартное шифрование Google.
  • customer-managed-encryption: использовать шифрование CMEK. Укажите идентификатор ключа в аргументе --kms-key-name.

В следующем примере показано, как настроить шифрование CMEK для клонированной базы данных:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

интерфейс командной строки Firebase

Чтобы клонировать базу данных, используйте команду firebase firestore:databases:clone:

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP' \

Замените следующее:

  • SOURCE_DATABASE – название существующей базы данных, которую вы хотите клонировать. Название должно быть указано в формате projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • DESTINATION_DATABASE: название новой клонированной базы данных. Название должно быть указано в формате projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. Это название не должно быть связано с существующей базой данных.

  • PITR_TIMESTAMP – временная метка восстановления на определенный момент времени в формате RFC 3339 с точностью до минуты. Примеры: 2025-06-01T10:20:00.00Z или 2025-06-01T10:30:00.00-07:00. Если не указано, будет выбрано текущее время, округленное до минуты.

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

  • USE_SOURCE_ENCRYPTION (по умолчанию) – использовать ту же конфигурацию шифрования, что и в исходной базе данных.
  • GOOGLE_DEFAULT_ENCRYPTION – использовать стандартное шифрование Google.
  • CUSTOMER_MANAGED_ENCRYPTION: использовать шифрование CMEK. Укажите идентификатор ключа в аргументе --kms-key-name.

Как настроить разрешения на доступ к отдельным базам данных

Вы можете использовать условия Identity and Access Management, чтобы настроить разрешения на доступ на уровне базы данных. В примерах ниже показано, как с помощью Google Cloud CLI назначить условный доступ для одной или нескольких баз данных. Вы также можете определить условия IAM в консоли Google Cloud.

Как посмотреть существующие правила IAM

gcloud projects get-iam-policy PROJECT_ID

В качестве значения PROJECT_ID укажите идентификатор проекта.

Как предоставить доступ к базе данных

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

Используйте их в сочетании с перечисленными ниже ключами:

  • PROJECT_ID – идентификатор проекта;
  • EMAIL – адрес электронной почты, который представляет определенный аккаунт. Пример: alice@example.com.
  • DATABASE_ID – идентификатор базы данных.
  • TITLE – необязательное название выражения.
  • DESCRIPTION – необязательное описание выражения.

Предоставление доступа ко всем базам данных, кроме одной

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

Используйте их в сочетании с перечисленными ниже ключами:

  • PROJECT_ID – идентификатор проекта;
  • EMAIL – адрес электронной почты, который представляет определенный аккаунт. Пример: alice@example.com.
  • DATABASE_ID – идентификатор базы данных.
  • TITLE – необязательное название выражения.
  • DESCRIPTION – необязательное описание выражения.

Удалить правила для указанного участника и роли

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

Используйте их в сочетании с перечисленными ниже ключами:

  • PROJECT_ID – идентификатор проекта;
  • EMAIL – адрес электронной почты, который представляет определенный аккаунт. Пример: alice@example.com.

Ограничения

В одном проекте может быть не более 100 баз данных. Чтобы увеличить лимит, обратитесь в службу поддержки.

Дальнейшие действия