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

Относится только к версии 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

Создать базу данных

Чтобы создать облачное хранилище 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 alpha firestore databases clone для клонирования базы данных:

gcloud alpha 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 alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

Изменить конфигурацию шифрования клонированной базы данных

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

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

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

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

Настройте разрешения на доступ к каждой базе данных

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

Что дальше?