管理 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(包天方案)

管理用户

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 的请求。
    • 每位用户每分钟 1,200 个请求的配额。在此,“每位用户”是指无论请求是由客户端应用、Firebase Admin SDK 还是 REST API 发起的,该限制都适用于由一个 IP 地址发起的请求。

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

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

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

管理 Cloud SQL 实例

免费试用限制

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

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

管理 Cloud SQL 实例

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

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

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

授予 PostgreSQL 用户角色

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

在某些情况下,您可能希望使用所选的 SQL 客户端(例如 Cloud RunCloud Functions 或 GKE)直接连接到 Data Connect 管理的 Cloud SQL 数据库。

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

  • 向需要连接到实例的用户或服务账号分配 roles/cloudsql.client IAM 角色,可通过 Google Cloud 控制台或使用 gcloud CLI 完成此操作
  • 使用 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 集成。

使用 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-first 方法,因为可能存在不支持架构更改的情况。此外,如果您部署的更改导致 PostgreSQL 架构与已部署的连接器查询或突变不兼容,则这些连接器可能会停止工作或出现异常行为。