管理 Data Connect 服务和数据库

您的 Data Connect 项目包含两个主要基础架构 元素:

  • 一个或多个 Data Connect 服务实例
  • 一个或多个 Cloud SQL for PostgreSQL 实例

本指南讨论了如何设置和管理您的 Data Connect 服务实例,并介绍了如何管理关联的 Cloud SQL 实例。

Firebase Data Connect 配置区域

使用 Data Connect 的项目需要进行位置设置。

创建新的 Data Connect 服务实例时,系统会提示您 选择服务的位置。

可用位置

Data Connect 服务可以在以下 区域中创建。

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1(不适用于 Spark 方案试用版)
  • asia-southeast2(不适用于 Spark 方案试用版)
  • australia-southeast1
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4

管理 Data Connect 服务实例

创建服务

如需创建新服务,请使用 Firebase 控制台或使用 Firebase CLI 运行本地项目 初始化。这些工作流会创建新的 Data Connect 服务。

这些流程还会引导您完成以下操作:

  • 预配新的 Cloud SQL 实例(免费层级)
  • 将现有 Cloud SQL 实例关联到 Data Connect (Blaze 方案)

管理用户

Data Connect 提供了用于管理用户访问权限的工具,这些工具遵循 最小权限原则(向每个用户或服务账号授予 支持所需功能的最低必要权限)和 基于角色的访问控制 (RBAC) 的概念(使用预定义角色来管理数据库 权限,从而简化安全管理)。

如需将项目成员添加为可以修改项目中 Data Connect 实例的用户,请使用 Firebase 控制台选择适当的 预定义用户角色。

这些角色使用 Identity and Access Management (IAM) 授予权限。一个角色对应一组权限。为项目成员分配某个角色后,该成员将获得该角色包含的所有权限。如需了解详情,请参阅:

选择角色以启用特定工作流

借助 IAM 角色,Firebase CLI 工作流可让您管理您的 Data Connect 项目。

CLI 命令、其他工作流 所需角色
firebase init dataconnect
  • 无权限(未关联 Cloud SQL 实例时)
  • roles/cloudsql.admin(创建 Cloud SQL 实例时)
firebase deploy -–only dataconnect
  • firebasedataconnect.connectors.*
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
  • roles/cloudsql.admin
firebase dataconnect:sql:diff
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
firebase dataconnect:sql:migrate
  • 目标 Cloud SQL 实例上的 roles/cloudsql.admin
firebase dataconnect:sql:grant
  • 目标 Cloud SQL 实例上的 roles/cloudsql.admin

监控 Data Connect 服务性能

了解服务性能

Data Connect 服务和 Cloud SQL for PostgreSQL 服务的性能都会影响您的体验。

  • 对于 Cloud SQL for PostgreSQL 服务,请参阅 配额和限制文档中的一般指南。
  • 对于 Data Connect 服务,GraphQL 请求存在配额, 这会影响您调用和执行查询的速率:

    • 每个项目每个区域每分钟 24000 个 GraphQL 请求的配额

    如果您遇到这些配额限制,请与 Firebase 支持团队 联系以调整相关配额。

监控服务性能、用量和结算信息

您可以在 Firebase 控制台中监控请求、错误和操作速率(包括全局和按 操作)。

管理 Cloud SQL 实例

免费试用限制

Spark 或 Blaze 免费试用版不支持以下 Cloud SQL for PostgreSQL 功能: Spark 或 Blaze 免费试用版

  • 不同于 db-f1-micro 的机器层级
  • 更改实例的资源,例如区域、存储空间、内存、CPU
  • 15.x 以外的 PostgreSQL 版本
  • 只读副本
  • 专用实例 IP 地址
  • 高可用性(多可用区);仅支持单可用区实例
  • 企业 Plus 版
  • 自动备份
  • 存储空间自动扩容。

临时 onboarding 数据库的限制

Data Connect 添加到 Firebase 项目后,您可以立即开始对数据模型进行原型设计并加载数据,因为数据将存储在临时数据库中。请注意,永久 Cloud SQL for PostgreSQL 实例的预配时间为 5 到 20 分钟。您加载的任何初始数据都会在永久 PostgreSQL 数据库预配完毕后自动迁移到该数据库。

此临时数据库非常适合用于探索架构和 CRUD 操作。

如果您不想使用临时数据库,请等待 Cloud SQL 实例预配完毕。

临时数据库不是 PostgreSQL 数据库,并且不提供所有 PostgreSQL 功能。

主要限制包括:

  • 数据库大小必须小于 1 MB
  • 每个表的行数必须小于 1000
  • 每秒查询次数少于 1 次
  • 不支持全文搜索
  • 不支持生成向量嵌入
  • 不支持 SQL 功能,例如 @view@col(dataType)原生 SQL

管理 Cloud SQL 实例

一般来说,您可以使用 Google Cloud Cloud SQL 控制台来 执行以下工作流。

Data Connect

如需了解这些工作流和其他工作流,请参阅 Cloud SQL for PostgreSQL 文档

授予 PostgreSQL 用户角色

Data Connect 提供了用于管理用户访问权限的工具,这些工具遵循 最小权限原则(向每个用户或服务账号授予 支持所需功能的最低必要权限)和 基于角色的访问控制 (RBAC) 的概念(使用预定义角色来管理数据库 权限,从而简化安全管理)。

在某些情况下,您可能希望使用 Cloud RunCloud Functions 或 GKE 等工具,通过您选择的 SQL 客户端直接连接到 Data Connect-managed Cloud SQL 数据库。

如需启用此类连接,您需要通过以下方式授予 SQL 权限:

  • Google Cloud 控制台或 使用 gcloud CLI 向需要连接到实例的用户或服务账号 分配 roles/cloudsql.client IAM 角色
  • 使用 Firebase CLI 授予必要的 PostgreSQL 角色

分配 Cloud SQL IAM 角色

如需了解如何使用 Cloud SQL for PostgreSQL 分配 IAM 角色 roles/cloudsql.client,请参阅角色和权限

授予 PostgreSQL 角色

使用 Firebase CLI,您可以使用 firebase dataconnect:sql:grant 命令向与您的项目关联的用户或服务账号授予预定义的 PostgreSQL 角色。

例如,如需授予写入者角色,请在 CLI 中运行以下命令:

firebase dataconnect:sql:grant --role writer

如需了解详情,请参阅 CLI 参考指南

集成现有的 Cloud SQL for PostgreSQL 数据库

默认数据库预配和管理流程假定您的项目 使用新的(绿地)数据库,并且当您调用 firebase deploy 时, Data Connect 将显示要进行的数据库架构更改,并在您批准后 执行任何迁移。

对于现有(棕地)数据库,您可能拥有自己的架构管理工作流,并且无法使用 Data Connect 工具进行迁移,但您希望在 Data Connect 项目中使用数据库,以利用其移动和 Web SDK 生成、基于查询的授权、客户端连接管理等功能。

本部分提供了有关后一种情况的指南:将现有 数据库与 Data Connect 集成。

操作

将现有数据库集成到 Data Connect 项目中

集成现有数据库的工作流通常涉及以下步骤:

  1. Firebase 控制台中设置 Data Connect 项目期间, 选择实例和数据库。
  2. 使用 Firebase CLI,运行 firebase dataconnect:sql:setup 命令 并拒绝允许 Data Connect 处理 SQL 迁移的选项。

    为防止对数据库架构进行非自定义工具驱动的更改,setup 命令将分配适当的读取者和写入者角色,但不会分配 owner 角色。如需详细了解 setup 命令和 PostgreSQL 角色,请参阅 CLI 参考指南

  3. 编写与数据库 架构匹配的 Data Connect GraphQL 架构。

    只有当 GraphQL 架构与 PostgreSQL 架构兼容时,您才能部署 GraphQL 架构、查询和变更。

    为简化两个架构的对齐,我们提供了 firebase dataconnect:sql:diff 命令,该命令将为您提供迁移数据库所需的 SQL 语句。您可以使用此命令以迭代方式优化 GraphQL 架构,使其与现有数据库架构匹配。

  4. 接下来,您可以在本地开发环境中快速迭代 GraphQL 架构、查询和变更。然后,在满意后,您可以使用 firebase dataconnect:sql:diff 获取 SQL 迁移语句,您可以使用自定义工具和流程将其应用于 PostgreSQL。

  5. 或者,您可以先直接对 PostgreSQL 数据库进行更改,然后尝试将其移植回 GraphQL 架构。我们建议采用 GraphQL 优先方法,因为在某些情况下,架构更改可能不受支持。此外,如果您部署的更改导致 PostgreSQL 架构与已部署的连接器查询或变更不兼容,则这些连接器可能会停止工作或行为异常。