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

На этой странице описывается, как создавать, обновлять и удалять базы данных 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

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

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

Консоль
  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 CLI для развертывания Cloud Firestore Security Rules в каждой из ваших баз данных. Подробнее об управлении и развертывании Cloud Firestore Security Rules см. в руководстве .

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

Именованная база данных включает в себя любую базу данных без имени (default) . По умолчанию Firebase SDK и клиентские библиотеки 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 на идентификатор базы данных, которую необходимо удалить.

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

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

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

Ограничения

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

Что дальше?