На этой странице описано, как создавать, обновлять и удалять базы данных 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
Создайте базу данных
Для создания базы данных используйте один из следующих методов:
Консоль
В консоли Firebase перейдите на страницу базы данных Firestore .
- Если это ваша первая база данных с указанным именем, нажмите «Добавить базу данных» .
- В противном случае нажмите (по умолчанию) , затем «Добавить базу данных» .
- Настройте базу данных. Введите идентификатор базы данных. Выберите местоположение. Нажмите «Создать базу данных» .
gcloud
Используйте команду gcloud firestore databases create .
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
Замените следующее:
- DATABASE_ID : допустимый идентификатор базы данных .
- LOCATION : название мультирегиона или региона Cloud Firestore .
- DATABASE_TYPE : либо
firestore-nativeдля нативного режима, либоdatastore-modeдля режима хранилища данных.
--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]
Замените следующее:
- DATABASE_ID : допустимый идентификатор базы данных .
- LOCATION : название мультирегиона или региона Cloud Firestore .
- DELETE_PROTECTION_ENABLEMENT : либо
ENABLED, либоDISABLED. Создаваемая база данных всегда работает в режиме Firestore Native.
--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 }
Замените следующее:
- DATABASE_ID : допустимый идентификатор базы данных .
- LOCATION : название мультирегиона или региона Cloud Firestore .
- DATABASE_TYPE : либо
FIRESTORE_NATIVEдля нативного режима, либоDATASTORE_MODEдля режима хранилища данных. - DELETE_PROTECTION_ENABLEMENT : Либо
DELETE_PROTECTION_ENABLED, либоDELETE_PROTECTION_DISABLED.
Параметр 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 для этой базы данных. Триггер перестает генерировать события, но продолжает существовать до тех пор, пока вы его не удалите .
Удаление базы данных не влечет за собой никаких дополнительных расходов за операции удаления.
Консоль
В консоли Firebase перейдите на страницу базы данных Firestore .
- На вкладке «Данные», над представлением таблицы данных базы данных, щелкните , затем выберите «Удалить базу данных» .
- Следуйте инструкциям, чтобы удалить базу данных.
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 могут перестать работать после удаления базы данных, даже если будет создана новая база данных с тем же именем.