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

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

Что дальше?