山西省煤炭工业厅法律服务未成交通知中标通知

百度 此次新政将允许来中关村的外籍知名专家学者以及中关村企业的境外员工,换发多次入境有效的访问签证,从而免去频繁办理短期签证入境的麻烦,这将为外籍专家学者到中关村高校院所、科研机构交流访问提供极大便利。

本页面介绍如何创建、更新和删除 Cloud Firestore 数据库。可为每个项目创建多个 Cloud Firestore 数据库。您可以使用多个数据库来设置生产环境和测试环境、隔离客户数据以及进行数据区域化。

(default) 数据库

如果您未指定数据库,则 Cloud Firestore 客户端库和 Google Cloud CLI 会默认连接到 (default) 数据库。

所需的角色

如需创建和管理数据库,您需要拥有 OwnerDatastore Owner Identity and Access Management 角色。这些角色会授予所需的权限。

所需权限

如需管理数据库,您需要以下权限:

  • 创建数据库:datastore.databases.create
  • 读取数据库配置:datastore.databases.getMetadata
  • 配置数据库:datastore.databases.update
  • 删除数据库:datastore.databases.delete
  • 克隆数据库:datastore.databases.clone

创建数据库

如需创建数据库,请使用以下方法之一:

控制台
  1. Firebase 控制台中,前往 Firestore 数据库页面。

    前往 Firestore 数据库

  2. 如果这是您的第一个命名数据库,请点击添加数据库
  3. 否则,请点击(默认),然后点击添加数据库
  4. 配置数据库。输入数据库 ID。选择地理位置。 点击创建数据库
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 是可选参数,用于启用删除保护。启用删除保护时,您无法删除数据库。您必须先停用此设置才能删除。默认情况下,此设置处于停用状态。

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
}

请替换以下内容:

  • DATABASE_ID有效的数据库 ID
  • LOCATIONCloud Firestore 多区域或单区域的名称。
  • DATABASE_TYPEFIRESTORE_NATIVE(针对原生模式)或 DATASTORE_MODE(针对 Datastore 模式)。
  • DELETE_PROTECTION_ENABLEMENTDELETE_PROTECTION_ENABLEDDELETE_PROTECTION_DISABLED

delete_protection_state 是可选参数,用于启用删除保护。启用删除保护时,您无法删除数据库。您必须先停用此设置才能删除。默认情况下,此设置处于停用状态。

数据库 ID

有效的数据库 ID 包括 (default) 和符合以下要求的 ID:

  • 仅包含字母、数字和连字符 (-)。
  • 字母必须小写。
  • 第一个字符必须是字母。
  • 最后一个字符必须是字母或数字。
  • 最少 4 个字符。
  • 最多 63 个字符。
  • 不得为 UUID 或与 UUID 类似。例如,不要使用 f47ac10b-58cc-0372-8567-0e02b2c3d479 之类的 ID。

如果删除了数据库,则要等到 5 分钟后,才能立即重复使用数据库 ID。

删除保护

使用删除保护可防止意外删除数据库。您无法删除已启用删除保护的数据库,必须先停用此设置。删除保护默认处于停用状态。您可以在创建数据库时启用删除保护,也可以更新数据库配置以启用删除保护。

为数据库设置 Cloud Firestore Security Rules

使用 Firebase CLI 将 Cloud Firestore Security Rules 部署到您的每个数据库。请参阅管理和部署 Cloud Firestore Security Rules 的指南

使用客户端库访问已命名数据库

命名的数据库包括任何未命名为 (default) 的数据库。默认情况下,Firebase SDK 和 Google API 客户端库会连接到项目中的 (default) Cloud Firestore 数据库。如需创建连接到已命名数据库的客户端,请在实例化客户端时设置数据库 ID。

列出数据库

使用以下方法之一列出您的数据库:

控制台

在 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 替换为数据库 ID。

更新数据库配置

如需更新数据库的配置设置,请使用 gcloud firestore databases update 命令。使用此命令可启用或停用删除保护。

更新删除保护设置

如需对数据库启用删除保护,请使用带有 --delete-protection 标志的 gcloud firestore databases update 命令。例如:

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

DATABASE_ID 替换为数据库 ID。

如需对数据库停用删除保护,请使用带有 --no-delete-protection 标志的 gcloud firestore databases update 命令。例如:

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

DATABASE_ID 替换为数据库 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 替换为要删除的数据库的 ID。

克隆数据库

您可以将现有数据库在选定时间点的数据克隆到新的数据库中:

  • 克隆的数据库是一个新数据库,将在源数据库所在的同一位置创建。

    为了创建克隆,Cloud Firestore 使用源数据库的时间点恢复 (PITR) 数据。克隆的数据库包含所有数据和索引。

  • 默认情况下,克隆的数据库将采用与源数据库相同的加密方式(Google 默认加密或 CMEK 加密)。您可以指定其他加密类型,也可以使用其他密钥进行 CMEK 加密。

  • 时间戳的粒度为 1 分钟,它指定了过去的一个时间点,该时间点必须在 PITR 时间窗口定义的时段内:

    • 如果数据库已启用 PITR,您可以选择过去 7 天内的任意一分钟(如果 PITR 启用时间不足 7 天,则可选择启用以来的任意一分钟)。
    • 如果未启用 PITR,您只能选择过去一小时内的任意分钟。
    • 您可以在数据库的说明中查看可选择的最早时间戳。

控制台

Firebase 控制台不支持克隆数据库。您可以按照 Google Cloud CLI 的说明克隆数据库。

gcloud

使用 gcloud alpha firestore databases clone 命令克隆数据库:

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

替换以下内容:

  • SOURCE_DATABASE_ID:您要克隆的现有数据库的数据库 ID

  • PITR_TIMESTAMP:采用 RFC 3339 格式PITR 时间戳,精确到分钟。例如:2025-08-04T10:20:00.00Z2025-08-04T10:30:00.00-07:00

  • DESTINATION_DATABASE_ID:新克隆数据库的数据库 ID。此数据库 ID 不得与现有数据库相关联。

示例:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-08-04T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

更改克隆数据库的加密配置

默认情况下,克隆的数据库将具有与源数据库相同的加密配置。如需更改加密配置,请使用 --encryption-type 参数:

  • (默认)use-source-encryption:使用与源数据库相同的加密配置。
  • google-default-encryption:使用 Google 的默认加密方式。
  • customer-managed-encryption:使用 CMEK 加密。在 --kms-key-name 参数中指定密钥 ID

以下示例展示了如何为克隆的数据库配置 CMEK 加密:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-08-04T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

配置每个数据库的访问权限

您可以使用 Identity and Access Management Conditions 来配置每个数据库级别的访问权限。以下示例使用 Google Cloud CLI 为一个或多个数据库分配条件式访问权限。您还可以在 Google Cloud 控制台中定义 IAM 条件

查看现有 IAM 政策

gcloud projects get-iam-policy PROJECT_ID

PROJECT_ID 设置为您的项目 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:您的项目 ID
  • EMAIL:表示特定 Google 账号的邮箱。例如 alice@example.com
  • DATABASE_ID:数据库 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:您的项目 ID
  • EMAIL:表示特定 Google 账号的邮箱。例如 alice@example.com
  • DATABASE_ID:数据库 ID。
  • TITLE:表达式的可选标题。
  • DESCRIPTION:表达式的可选说明。

移除指定成员和角色的政策

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

设置以下内容:

  • PROJECT_ID:您的项目 ID
  • EMAIL:表示特定 Google 账号的邮箱。例如 alice@example.com

Cloud Monitoring

Cloud Firestore 指标在两个受监控的资源下报告。

您可以通过查看 firestore.googleapis.com/Database 在数据库级别检查汇总指标。firestore_instance 下报告的指标在项目级层汇总。

限制

  • 每个项目最多可以有 100 个数据库。您可以与支持团队联系,申请提高此限制。
  • 如果 (default) 数据库包含任何 GAE 搜索数据,则无法删除该数据库。使用 index delete api 删除 GAE 的搜索数据。如果您最近删除了 GAE 搜索数据,则可能需要等待一段时间才能删除数据库。
  • 如果 (default) 数据库包含任何 blob 实体,则无法删除该数据库。使用 Blobstore delete api 删除 Blobstore 数据。您可以在 Google Cloud 控制台中运行以下 GQL 查询,检查您的 (default) 数据库是否有 Blobstore 数据:SELECT * FROM __BlobInfo__
  • 在删除操作发生后的 5 分钟内,您不能重复使用数据库 ID。
  • Cloud Functions v1 不支持 Firestore 已命名数据库。使用 Cloud Firestore 触发器(第 2 代)为已命名数据库配置事件。
  • Firestore 函数触发器 v1Firestore 事件触发器可能会在数据库被删除后停止运行,即使在创建了具有相同名称的新数据库后也不会恢复运行。

后续步骤