管理 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
  • asia-southeast2
  • 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 请求设置了配额,这会影响您调用和执行查询的速率:

    • 每个项目的总配额为客户端应用连接器每分钟 6,000 个请求。
    • 每个项目的总配额为每分钟 6,000 个请求,包括通过 Firebase Admin SDK 和 REST API 发出的请求。
    • 每位用户每分钟 1200 个请求的配额。在这里,“每位用户”是指此限制适用于由一个 IP 地址发起的请求,无论是通过客户端应用、Firebase Admin SDK 还是 REST API 发起的请求。

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

监控服务性能、使用情况和结算

您可以在 Firebase 控制台中监控请求、错误和操作率(总体和按操作)。

管理 Cloud SQL 实例

免费试用限制

3 个月免费试用期间不支持以下 Cloud SQL for PostgreSQL 功能:

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

管理 Cloud SQL 实例

通常,您可以使用 Google Cloud 控制台管理 Cloud SQL 实例,以执行以下工作流。

  • 停止和重启 Cloud SQL 实例
  • 创建和删除 Cloud SQL 数据库(在实例中)
  • 使用标志启动 PostgreSQL 数据库实例并使用各种扩展程序
  • Google Cloud 控制台中使用 Cloud SQL 可观测性功能监控性能
  • 使用 IAM、密钥管理器、数据加密和身份验证代理等功能管理 Cloud SQL 访问权限和安全性
  • 添加、删除和管理 Cloud SQL 用户。

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

授予 PostgreSQL 用户角色

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

在某些情况下,您可能希望通过您选择的 SQL 客户端(例如 Cloud RunCloud Functions 或 GKE)直接连接到 Data Connect 管理的 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 角色。

例如,如需授予“writer”角色,请在 CLI 中运行以下命令:

firebase dataconnect:sql:grant --role writer

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

集成现有 Cloud SQL for PostgreSQL 数据库

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

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

本部分将介绍后一种情况:将现有数据库与 Data Connect 集成。

使用 Database Migration Service

将现有数据库集成到 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 架构与已部署的连接器查询或更改不兼容,则这些连接器可能会停止运行或出现异常行为。