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

Это относится только к версии Cloud Firestore Enterprise.

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

Использование бесплатного уровня

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

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

Прежде чем начать

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

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

  2. Назначьте соответствующие роли управления идентификацией и доступом, как описано в следующем разделе.

Требуемые роли

Для создания и управления базами данных необходима роль Owner или Datastore Owner в системе управления идентификацией и доступом. Эти роли предоставляют необходимые разрешения.

Необходимые разрешения

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

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

Создайте базу данных

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

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

    Перейдите в базу данных Firestore.

  2. Нажмите «Создать базу данных» .
  3. Выберите версию Enterprise . Нажмите «Далее» .
  4. Введите идентификатор базы данных.
  5. Выберите местоположение для вашей базы данных.
  6. Настройте базу данных, выбрав режим работы.
  7. Нажмите «Создать» .
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

Используйте команду gcloud firestore databases create и установите --edition=enterprise .

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

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

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

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

Для добавления тегов в базу данных используйте флаг --tags . Например:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Терраформирование

Используйте ресурс google_firestore_database и установите для database_edition значение ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

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

Чтобы включить защиту от удаления, установите delete_protection_state в значение DELETE_PROTECTION_ENABLED . Вы не сможете удалить базу данных с включенной защитой от удаления, пока не отключите этот параметр. По умолчанию этот параметр отключен.

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

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

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

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

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

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

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

Список баз данных

Для вывода списка ваших баз данных используйте один из следующих способов:

Консоль 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 :

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

Консоль

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

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

  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'

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

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

  • PITR_TIMESTAMP : метка времени PITR в формате RFC 3339 с точностью до минуты. Например: 2025-06-01T10:20:00.00Z или 2025-06-01T10:30:00.00-07:00 .

  • 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 , который представляет собой необязательный список пар тегов KEY=VALUE для привязки.

Пример:

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 CLI

Для клонирования базы данных используйте команду 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 : метка времени PITR в формате 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 .

Настройте права доступа для каждой базы данных.

Вы можете использовать условия управления идентификацией и доступом (IAM) для настройки прав доступа на уровне каждой базы данных. В следующих примерах используется интерфейс командной строки Google Cloud для назначения условного доступа к одной или нескольким базам данных. Вы также можете определить условия 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 баз данных. Для увеличения этого лимита вы можете обратиться в службу поддержки .

Что дальше?