SQL Connect サービスとデータベースを管理する

SQL Connect プロジェクトは、次の 2 つの主要なインフラストラクチャ 要素で構成されています。

  • 1 つ以上の SQL Connect サービス インスタンス
  • 1 つ以上の Cloud SQL for PostgreSQL インスタンス

このガイドでは、SQL Connect サービス インスタンスを設定して管理する方法について説明し、関連する Cloud SQL インスタンスを管理する方法について説明します。

Firebase SQL Connect のリージョンを構成する

SQL Connect を使用するプロジェクトには、ロケーションの設定が必要です。

新しい SQL Connect サービス インスタンスを作成すると、サービスのロケーションを選択するよう求められます 。

利用できるロケーション

SQL 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

サービス インスタンスSQL Connectを管理する

サービスの創出

新しいサービスを作成するには、Firebase コンソールを使用するか、Firebase CLI を使用してローカル プロジェクト の初期化を実行します。これらのワークフローでは、新しい SQL Connect サービスが作成されます。

これらのフローでは、次の操作も行えます。

  • 新しい Cloud SQL インスタンス(無料枠)のプロビジョニング
  • 既存の Cloud SQL インスタンスを SQL Connect にリンクする(Blaze プラン)

ユーザーを管理

SQL Connect には、ユーザー アクセスを管理するためのツールが用意されています。これらのツールは、 最小権限の原則 (必要な機能をサポートするために必要な最小限の権限を各ユーザーまたはサービス アカウントに付与する)ロールベースのアクセス制御 (RBAC)の概念 (データベース 権限を管理する事前定義ロールを使用して、セキュリティ管理を簡素化する) に従っています。

プロジェクト メンバーを、プロジェクト内の SQL Connect インスタンスを変更できるユーザーとして追加するには、Firebase コンソールを使用して適切な 事前定義済みのユーザーロールを選択します。

これらのロールは、Identity and Access Management(IAM)を使用して権限を付与します。ロールは権限のコレクションです。プロジェクト メンバーにロールを割り当てると、そのロールに含まれるすべての権限がそのプロジェクト メンバーに付与されます。詳細については、以下をご覧ください。

特定のワークフローを有効にするロールを選択する

IAM ロールを使用すると、Firebase CLI ワークフローで SQL 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

SQL Connect サービスのパフォーマンスをモニタリングする

サービスのパフォーマンスを理解する

SQL Connect サービスと Cloud SQL for PostgreSQL サービスの両方のパフォーマンスが、エクスペリエンスに影響する可能性があります。

  • Cloud SQLPostgreSQL サービスについては、割り当てと上限のドキュメントの一般的な ガイダンスをご覧ください。
  • SQL Connect サービスには、GraphQL リクエストの割り当てがあり、 クエリの呼び出しと実行のレートに影響します。

    • プロジェクトごと、リージョンごとに 1 分あたり 24,000 件の GraphQL リクエストの割り当て

    これらの割り当て上限に達した場合は、 Firebase サポート にお問い合わせのうえ、関連する割り当てを調整してください。

サービスのパフォーマンス、使用状況、請求をモニタリングする

リクエスト、エラー、オペレーション レートは、Firebase コンソールでグローバルに、またオペレーションごとにモニタリングできます。

Cloud SQL インスタンスを管理する

無料トライアルの制限事項

次の Cloud SQL for PostgreSQL 機能は、 Spark または Blaze の無料トライアルではサポートされていません。

  • db-f1-micro 以外のマシン階層
  • リージョン、ストレージ、メモリ、CPU など、インスタンスのリソースの変更
  • 15.x 以外の PostgreSQL バージョン
  • リードレプリカ
  • プライベート インスタンス IP アドレス
  • 高可用性(マルチゾーン)。シングルゾーン インスタンスのみがサポートされます。
  • Enterprise Plus エディション
  • 自動バックアップ
  • ストレージの自動増量。

一時オンボーディング データベースの制限事項

Firebase プロジェクトに SQL Connect を追加すると、データは一時データベースに保存されるため、データモデルの プロトタイピングとデータの読み込みをすぐに開始できます。永続的な Cloud SQL for PostgreSQL インスタンス のプロビジョニングには 5 ~ 20 分かかります。読み込んだ初期データは、プロビジョニングが完了すると、永続的な PostgreSQL データベースに自動的に移行されます。

この一時データベースは、スキーマと CRUD オペレーションを調べるのに最適です。

一時データベースを使用しない場合は、 Cloud SQL インスタンスがプロビジョニングされるまでお待ちください。

一時データベースは PostgreSQL データベースではなく、PostgreSQL のすべての機能を提供するわけではありません。

主な制限事項は次のとおりです。

  • データベース サイズは 1 MB 未満である必要があります
  • テーブルあたりの行数は 1,000 未満である必要があります
  • 1 秒あたりのクエリ数は 1 未満
  • 全文検索はサポートされていません
  • ベクトル エンベディングの生成はサポートされていません
  • @view@col(dataType)ネイティブ SQLなどの SQL 機能はサポートされていません。

Cloud SQL インスタンスを管理する

通常、Cloud SQL インスタンスを Google Cloud コンソール を使用して管理し、次のワークフローを実行できます。

  • Cloud SQL インスタンスを停止して再起動する

  • データベースをCloud SQL作成して削除する(インスタンス内)

  • フラグを使用して PostgreSQL データベース インスタンスを起動し、さまざまな 拡張機能を使用する

  • 可観測性機能を使用してパフォーマンスをモニタリングする Cloud SQL オブザーバビリティ機能 Google Cloud コンソールで

  • IAM、 Secret Manager、 データの暗号化、認証プロキシなどの機能を使用して、Cloud SQL のアクセスとセキュリティを管理する

  • Cloud SQL ユーザーを追加、削除、管理する。

これらのワークフローとその他のワークフローについては、 Cloud SQL for PostgreSQL のドキュメントをご覧ください

PostgreSQL ユーザーロールを付与する

SQL Connect には、ユーザー アクセスを管理するためのツールが用意されています。これらのツールは、 最小権限の原則 (必要な機能をサポートするために必要な最小限の権限を各ユーザーまたはサービス アカウントに付与する)ロールベースのアクセス制御 (RBAC)の概念 (データベース 権限を管理する事前定義ロールを使用して、セキュリティ管理を簡素化する) に従っています。

場合によっては、SQL Connect で管理される Cloud SQL データベースに、 たとえば Cloud RunCloud Functions、GKE などを使用して、選択した SQL クライアントを介して直接接続することが必要になることがあります。

このような接続を有効にするには、次の方法で SQL 権限を付与する必要があります。

  • インスタンスに接続する必要があるユーザーまたはサービス アカウントに、roles/cloudsql.client IAM ロールを Google Cloud コンソールまたは gcloud CLI から割り当てる
  • Firebase CLI を使用して必要な PostgreSQL ロールを付与する

Cloud SQL IAM ロールを割り当てる

Cloud SQLPostgreSQL を使用して IAM ロール roles/cloudsql.client を割り当てる方法については、 ロールと権限をご覧ください。

PostgreSQL ロールを付与する

Firebase CLI を使用すると、firebase dataconnect:sql:grant コマンドを使用して、プロジェクトに関連付けられたユーザー またはサービス アカウントに事前定義済みの PostgreSQL ロールを付与できます。

たとえば、ライターロールを付与するには、 Firebase CLI を使用して次のコマンドを実行します。

firebase dataconnect:sql:grant --role writer

詳細については、 Firebase CLI リファレンス ガイドをご覧ください

既存の Cloud SQL for PostgreSQL データベースを統合する

デフォルトのデータベース プロビジョニングと管理フローでは、プロジェクトで新しい(グリーンフィールド)データベースを使用することを前提としています。firebase deploy を呼び出すと、SQL Connect はデータベース スキーマの変更を表示し、承認後に移行を実行します。

既存の(ブラウンフィールド)データベースの場合、スキーマを 管理するための独自のワークフローがあり、移行に SQL Connect ツールを使用できませんが、 SQL Connect SQL Connect プロジェクトでデータベースを使用して、 モバイルとウェブ用の SDK 生成、クエリベースの認可、 クライアント接続管理などのメリットを活用したいと考えています。

このセクションでは、既存の データベースを SQL Connect と統合する方法について説明します。

既存のデータベースを SQL Connect プロジェクトに統合する

通常、既存のデータベースを統合するワークフローには次の手順が含まれます。

  1. SQL Connect プロジェクトを Firebase コンソールで設定するときに、 インスタンスとデータベースを選択します。

  2. Firebase CLI を使用して firebase dataconnect:sql:setup コマンド を実行し、SQL Connect で SQL 移行を処理するオプションを拒否します。

    カスタムツールによって駆動されないデータベース スキーマの変更を防ぐため、setup コマンドは適切なリーダーロールとライターロールを割り当てますが、owner ロールは割り当てません。setup コマンドと PostgreSQL ロールの詳細については、 Firebase CLI リファレンス ガイドをご覧ください

  3. データベース スキーマと一致する SQL Connect GraphQL スキーマを作成します。

    GraphQL スキーマ、クエリ、ミューテーションをデプロイできるのは、GraphQL スキーマが PostgreSQL スキーマと互換性がある場合のみです。

    両方のスキーマの調整を簡単にするために、firebase dataconnect:sql:diff コマンドが用意されています。このコマンドは、データベースを移行するために必要な SQL ステートメントを提供します。これを使用して、既存のデータベース スキーマに合わせて GraphQL スキーマを反復的に調整できます。

  4. 今後は、ローカル開発環境で GraphQL スキーマ、クエリ、ミューテーションを迅速に反復処理できます。その後、満足したら、firebase dataconnect:sql:diff を使用して、カスタムツールとフローを使用して PostgreSQL に適用できる SQL 移行ステートメントを取得できます。

  5. または、最初に PostgreSQL データベースに直接変更を加えてから、GraphQL スキーマに移植することもできます。スキーマの変更がサポートされていない場合があるため、GraphQL ファースト アプローチをおすすめします。また、PostgreSQL スキーマがデプロイされたコネクタ クエリまたはミューテーションと互換性のない変更をデプロイすると、これらのコネクタが動作しなくなるか、誤動作する可能性があります。