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

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

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

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

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

Бесплатную квоту можно использовать только с базой данных (default) .

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

Для создания и управления базами данных вам нужна роль Owner или Datastore Owner Identity and Access Management. Эти роли предоставляют необходимые разрешения.

Требуемые разрешения

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

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

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

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

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

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

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

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

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

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

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

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. Например, не используйте ID типа 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 подключаются к (default) базе данных Cloud Firestore в проекте. Чтобы создать клиента, подключенного к именованной базе данных, задайте идентификатор базы данных при создании экземпляра клиента.

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

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

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

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

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

gcloud firestore databases list

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

firebase firestore:databases:list

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

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

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

gcloud firestore databases describe --database=DATABASE_ID

Используйте команду 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 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 . Пожалуйста, используйте API удаления индекса для удаления данных поиска GAE. Если вы недавно удалили данные поиска GAE, может пройти период ожидания, прежде чем вы сможете удалить базу данных.
  • Вы не можете удалить свою (default) базу данных, если она содержит какие-либо объекты blob . Используйте API удаления Blobstore для удаления данных Blobstore. Вы можете проверить, содержит ли ваша (default) база данных данные Blobstore, выполнив следующий запрос GQL в консоли Google Cloud: SELECT * FROM __BlobInfo__ .
  • Повторное использование идентификатора базы данных возможно только через 5 минут после удаления.
  • Cloud Function v1 не поддерживает именованные базы данных Firestore. Используйте Cloud Firestore Triggers (2nd Gen) для настройки событий для именованных баз данных.
  • Триггеры функций Firestore v1 и триггеры событий Firestore могут перестать работать после удаления базы данных, даже если создается новая база данных с тем же именем.

Что дальше?