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

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

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

Чтобы создавать базы данных и управлять ими, вам потребуется следующая роль Identity and Access Management:

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

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

Создание базы данных

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

Консоль
Консоль Firebase
  1. В консоли Firebase выберите Databases & Storage (Базы данных и хранилище) > Firestore.

    Перейти в Firestore

  2. Нажмите Добавить базу данных.
  3. Выберите Стандартная версия. Нажмите Далее.
  4. Введите идентификатор базы данных.
  5. Выберите местоположение для базы данных. Нажмите Далее.
  6. Выберите режим запуска для устройства "Cloud Firestore Security Rules":

    Режим тестирования
    Подходит для начала работы с клиентскими библиотеками для мобильных устройств и веб-приложений, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом Защита данных.
    Производственный режим
    Запрещает все операции чтения и записи для мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (Node.js, Python, Java) по-прежнему могут получать доступ к базе данных.
  7. Нажмите Создать.
gcloud

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

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

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
интерфейс командной строки Firebase
firebase firestore:databases:create DATABASE_ID \n--location=LOCATION \n[--edition EDITION] \n[--firestore-data-access FIRESTORE_ACCESS] \n[--realtime-updates REALTIME_UPDATES] \n[--delete-protection DELETE_PROTECTION_ENABLEMENT]

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

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

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

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

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

Есть одно исключение: если вы не укажете идентификатор, в версии Standard будет создана база данных с названием (default).

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

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

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

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

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

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

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

Получение списка баз данных

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

Консоль

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

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

gcloud

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

gcloud firestore databases list
интерфейс командной строки Firebase

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

firebase firestore:databases:list

Посмотреть сведения о базе данных

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

gcloud

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

gcloud firestore databases describe --database=DATABASE_ID
интерфейс командной строки Firebase

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

firebase firestore:databases:get DATABASE_ID

Выходные данные для базы данных Enterprise включают следующие поля:

  • Edition: ENTERPRISE
  • Firestore Data Access: DATA_ACCESS_MODE_ENABLED или DATA_ACCESS_MODE_DISABLED
  • MongoDB Compatible Data Access: DATA_ACCESS_MODE_ENABLED или DATA_ACCESS_MODE_DISABLED
  • Realtime Updates: REALTIME_UPDATES_ENABLED или REALTIME_UPDATES_DISABLED

Замените 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 выберите Databases & Storage (Базы данных и хранилище) > 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:

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

Консоль

  1. В консоли Firebase откройте страницу Databases & Storage (Базы данных и хранилище) > Firestore.

  2. Рядом с названием базы данных нажмите на значок и выберите Клонировать базу данных. Откроется панель Clone database (Клонировать базу данных).

  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'

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

Пример:

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, который представляет собой необязательный список пар КЛЮЧ=ЗНАЧЕНИЕ тегов для привязки.

Пример:

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

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

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

Вы можете использовать условия Identity and Access Management, чтобы настроить разрешения на доступ на уровне базы данных. В примерах ниже используется 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 – адрес электронной почты, который представляет определенный аккаунт 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 Monitoring

Показатели Cloud Firestore регистрируются в двух ресурсах для мониторинга.

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

Ограничения

  • В одном проекте может быть не более 100 баз данных. Чтобы увеличить этот лимит, обратитесь в службу поддержки.
  • Вы не можете удалить базу данных (default), если в ней есть данные поиска GAE. Чтобы удалить данные поиска GAE, используйте index delete api. Если вы недавно удалили данные GAE Search, то, возможно, вам придется подождать, прежде чем вы сможете удалить базу данных.
  • Вы не можете удалить базу данных (default), если она содержит объекты blob. Чтобы удалить данные Blobstore, используйте Blobstore delete API. Чтобы проверить, есть ли в базе данных (default) данные Blobstore, выполните в консоли Google Cloud следующий запрос GQL: SELECT * FROM __BlobInfo__.
  • Идентификатор базы данных можно использовать повторно только через пять минут после удаления.
  • Функции Cloud Functions версии 1 не поддерживают именованные базы данных Firestore. Чтобы настроить события для именованных баз данных, используйте триггеры Cloud Firestore (2-го поколения).
  • Триггеры функций Firestore версии 1 и триггеры событий Firestore могут перестать работать после удаления базы данных, даже если новая база данных создана с тем же именем.

Дальнейшие действия