Управление базами данных

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

База данных (default)

Если вы не укажете базу данных, клиентские библиотеки Cloud Firestore и Google Cloud CLI по умолчанию будут подключаться к базе данных (default) .

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

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

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

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

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

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

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

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

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

  2. Если это ваша первая база данных с указанным именем, нажмите «Добавить базу данных» .
  3. В противном случае нажмите (по умолчанию) , затем «Добавить базу данных» .
  4. Настройте базу данных. Введите идентификатор базы данных. Выберите местоположение. Нажмите «Создать базу данных» .
gcloud

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

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

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

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

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

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

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

Терраформирование
resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

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

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

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

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

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

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

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

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

Настройте Cloud Firestore Security Rules для ваших баз данных.

Используйте интерфейс командной строки Firebase для развертывания Cloud Firestore Security Rules в каждой из ваших баз данных. Инструкции по управлению и развертыванию Cloud Firestore Security Rules см. в руководстве.

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

К именованным базам данных относятся любые базы данных, не имеющие имени (default) . По умолчанию SDK Firebase и клиентские библиотеки Google API подключаются к базе данных Cloud Firestore (default) в проекте. Чтобы создать клиент, подключенный к именованной базе данных, укажите идентификатор базы данных при создании экземпляра клиента.

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

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

Консоль

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

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

gcloud

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

gcloud firestore databases list
Firebase CLI

Используйте команду ` firebase firestore:databases:list , чтобы вывести список всех баз данных в вашем проекте.

firebase firestore:databases:list

Просмотреть подробную информацию о базе данных

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

gcloud

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

gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI

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

firebase firestore:databases:get DATABASE_ID

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

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

Для обновления параметров конфигурации базы данных используйте команду ` gcloud firestore databases update . Эта команда позволяет включить или отключить защиту от удаления.

Обновите настройки защиты от удаления.

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

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

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

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

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

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

Удаление базы данных

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

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

Если база данных содержит данные поиска App Engine или объекты типа BLOB , необходимо сначала удалить эти данные.

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

Удаление базы данных не влечет за собой никаких дополнительных расходов за операции удаления.

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

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

  2. На вкладке «Данные», над представлением таблицы данных базы данных, щелкните , затем выберите «Удалить базу данных» .
  3. Следуйте инструкциям, чтобы удалить базу данных.
gcloud

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

gcloud firestore databases delete --database=DATABASE_ID

Замените DATABASE_ID на идентификатор базы данных, которую нужно удалить. Для удаления базы данных по умолчанию используйте идентификатор '(default)'

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

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

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

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

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

  • Временная метка имеет точность до одной минуты и указывает на определенный момент времени в прошлом, в периоде, заданном окном PITR :

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

Консоль

Консоль Firebase не поддерживает клонирование баз данных. Для клонирования баз данных можно использовать инструкции Google Cloud CLI.

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/(default)' \
--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'

По умолчанию клонированная база данных будет иметь ту же конфигурацию шифрования, что и исходная база данных. Чтобы изменить конфигурацию шифрования, используйте аргумент --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/(default)' \
--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 : адрес электронной почты, представляющий конкретную учетную запись Google. Например, 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 : адрес электронной почты, представляющий конкретную учетную запись Google. Например, 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 : адрес электронной почты, представляющий конкретную учетную запись Google. Например, alice@example.com .

Мониторинг облачных сервисов

Метрики Cloud Firestore отображаются по двум отслеживаемым ресурсам.

Вы можете просмотреть сводные метрики на уровне базы данных, перейдя по адресу firestore.googleapis.com/Database . Метрики, отображаемые в разделе firestore_instance , агрегируются на уровне проекта.

Ограничения

  • В одном проекте можно использовать максимум 100 баз данных. Для увеличения этого лимита вы можете обратиться в службу поддержки .
  • Вы не можете удалить свою (default) базу данных, если она содержит данные поиска GAE . Используйте API удаления индекса для удаления данных поиска GAE. Если вы недавно удалили данные поиска GAE, может потребоваться некоторое время ожидания, прежде чем вы сможете удалить базу данных.
  • Вы не можете удалить свою (default) если она содержит какие-либо объекты типа Blob . Используйте API удаления Blobstore для удаления данных из Blobstore. Вы можете проверить, содержит ли ваша (default) данные из Blobstore, выполнив следующий GQL-запрос в консоли Google Cloud: SELECT * FROM __BlobInfo__ .
  • Вы не сможете повторно использовать идентификатор базы данных в течение 5 минут после удаления.
  • Cloud Function v1 не поддерживает именованные базы данных Firestore. Для настройки событий для именованных баз данных используйте триггеры Cloud Firestore (2-го поколения) .
  • Функции Firestore v1 и события Firestore могут перестать работать после удаления базы данных, даже если будет создана новая база данных с тем же именем.

Что дальше?