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

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

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

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

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

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

Интерфейс командной строки Firebase
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 для своих баз данных.

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

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

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

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

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

Консоль

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

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

gcloud

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

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

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

Чтобы просмотреть подробную информацию об одной базе данных, используйте команду gcloud firestore databases describe :

gcloud
gcloud firestore databases describe --database=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 .

gcloud firestore databases delete --database=DATABASE_ID

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

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

Вы можете использовать Условия управления идентификацией и доступом для настройки разрешений доступа на уровне каждой базы данных. В следующих примерах Google Cloud CLI используется для назначения условного доступа к одной или нескольким базам данных. Вы также можете определить условия IAM в консоли GCP .

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

Что дальше