Data Connect プロジェクトは、次の 2 つの主要なインフラストラクチャ 要素で構成されています。
- 1 つ以上の Data Connect サービス インスタンス
- 1 つ以上の 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)の概念(データベース権 101 限を管理するための事前定義されたロールを使用して、セキュリティ管理を簡素化する)に従っています。
プロジェクト メンバーを、プロジェクト内の Data Connect インスタンスを変更できるユーザーとして追加するには、Firebase コンソールを使用して適切な 事前定義されたユーザーロールを選択します。
これらのロールは、Identity and Access Management(IAM)を使用して権限を付与します。ロールは権限のコレクションです。プロジェクト メンバーにロールを割り当てると、そのロールに含まれるすべての権限がそのプロジェクト メンバーに付与されます。詳細については、以下をご覧ください。
特定のワークフローを有効にするロールを選択する
IAM ロールを使用すると、Firebase CLI ワークフローで Data Connect プロジェクトを管理できます。
| CLI コマンド、その他のワークフロー | 必要なロール |
|---|---|
firebase init dataconnect
|
|
firebase deploy -–only dataconnect
|
|
firebase dataconnect:sql:diff
|
|
firebase dataconnect:sql:migrate
|
|
firebase dataconnect:sql:grant
|
|
Data Connect サービスのパフォーマンスをモニタリングする
サービスのパフォーマンスを理解する
Data Connect サービスと Cloud SQL for PostgreSQL サービスの両方のパフォーマンスが、エクスペリエンスに影響する可能性があります。
- Cloud SQL for PostgreSQL サービスについては、 割り当てと上限のドキュメントの一般的なガイダンスをご覧ください。
Data 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 プロジェクトに Data 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 インスタンスを管理する
通常、 Google Cloud コンソールを使用して Cloud SQL インスタンスを管理し、 次のワークフローを実行できます。Google Cloud
Data Connect- Cloud SQL インスタンスを停止して再起動する
- Cloud SQL データベースを作成して削除する(インスタンス内)
- フラグを使用して PostgreSQL データベース インスタンスを起動し、さまざまな拡張機能を使用する
- Cloud SQL のオブザーバビリティ機能 を使用してパフォーマンスをモニタリングするGoogle Cloud コンソール
- IAM、シークレット マネージャー、データ暗号化、認証プロキシなどの機能を使用して、Cloud SQL のアクセスとセキュリティを管理する
- Cloud SQL ユーザーを追加、削除、管理する。
これらのワークフローとその他のワークフローについては、 Cloud SQL for PostgreSQL のドキュメントをご覧ください。
PostgreSQL ユーザーロールを付与する
Data Connect には、ユーザー アクセスを管理するためのツールが用意されています。これらのツールは、 最小権限の原則(必要な機能をサポートするために必要な最小限の権限を各ユーザーまたはサービス アカウントに付与する)と、 ロールベースのアクセス制御(RBAC)の概念(データベース権 101 限を管理するための事前定義されたロールを使用して、セキュリティ管理を簡素化する)に従っています。
場合によっては、Data Connect で管理される Cloud SQL データベースに、Cloud Run、Cloud Functions、GKE などの任意の SQL クライアントを使用して直接接続することが必要になることがあります。Cloud RunCloud Functions
このような接続を有効にするには、次の方法で SQL 権限を付与する必要があります。
- インスタンスに接続する必要があるユーザーまたはサービス アカウントに
roles/cloudsql.clientIAM ロールを割り当てるには、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 ツールを使用できませんが、モバイルとウェブ用の SDK 生成、クエリベースの認可、クライアント接続管理などのメリットを活用するために、Data Connect プロジェクトでデータベースを使用したいと考えています。
このセクションでは、既存の データベースを Data Connect と統合する後半のケースについて説明します。
に沿って Database Migration Service を使用できます。既存のデータベースを Data Connect プロジェクトに統合する
既存のデータベースを統合するワークフローには、通常次の手順が含まれます。
- Data Connect プロジェクトを Firebase コンソールで設定するときに、インスタンスとデータベースを選択します。
Firebase CLI を使用して
firebase dataconnect:sql:setupコマンド を実行し、Data Connect で SQL 移行を処理するオプションを拒否します。カスタムツールによって駆動されないデータベース スキーマの変更を防ぐため、
setupコマンドは適切なリーダーロールとライターロールを割り当てますが、ownerロールは割り当てません。setupコマンドと PostgreSQL ロールの詳細については、CLI リファレンス ガイドをご覧ください。データベース スキーマと一致する Data Connect GraphQL スキーマを作成します。
GraphQL スキーマ、クエリ、ミューテーションをデプロイできるのは、GraphQL スキーマが PostgreSQL スキーマと互換性がある場合のみです。
両方のスキーマの調整を簡単にするために、
firebase dataconnect:sql:diffコマンドが用意されています。このコマンドは、データベースを移行するために必要な SQL ステートメントを提供します。これを使用して、既存のデータベース スキーマと一致するように GraphQL スキーマを反復的に調整できます。今後は、ローカル開発環境で GraphQL スキーマ、クエリ、ミューテーションを迅速に反復処理できます。その後、満足したら、
firebase dataconnect:sql:diffを使用して、カスタムツールとフローを使用して PostgreSQL に適用できる SQL 移行ステートメントを取得できます。または、最初に PostgreSQL データベースに直接変更を加えてから、GraphQL スキーマに移植することもできます。スキーマの変更がサポートされていない場合があるため、GraphQL ファースト アプローチをおすすめします。また、PostgreSQL スキーマがデプロイされたコネクタ クエリまたはミューテーションと互換性がなくなるような変更をデプロイすると、それらのコネクタが動作しなくなるか、誤動作する可能性があります。