データベースの作成と管理

このページでは、Firestore データベースを作成、更新、削除する方法について説明します。プロジェクトごとに複数の Firestore データベースを作成できます。複数のデータベースを使用して、本番環境とテスト環境の設定、顧客データの分離、データのリージョン指定を行うことができます。

(default) データベース

アプリで複数のデータベースが不要な場合は、(default) データベースを使用します。

データベースを指定しない場合、Firestore クライアント ライブラリと Google Cloud CLI はデフォルトで (default) データベースに接続されます。

無料の割り当ては、(default) データベースでのみ使用できます。

必要なロール

データベースを作成して管理するには、Owner または Datastore Owner の Identity and Access Management ロールが必要です。これらのロールにより、必要な権限が付与されます。

必要な権限

データベースを管理するには、次の権限が必要です。

  • データベースを作成する: datastore.databases.create
  • データベース構成を読み取る: datastore.databases.getMetadata
  • データベースを構成する: datastore.databases.update
  • データベースを削除する: datastore.databases.delete

データベースの作成

データベースを作成するには、次のいずれかの方法を使用します。

コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. [データベースを作成] をクリックします。
  3. データベース モードを選択します。[続行] をクリックする
  4. データベースを構成します。データベース ID を入力します。ロケーションを選択します。モバイル クライアントとウェブ クライアントのセキュリティ ルールを選択します。[データベースを作成] をクリックします。
gcloud

gcloud firestore databases create コマンドを使用します。

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

次のように置き換えます。

--delete-protection は、削除からの保護を有効にするためのオプションのフラグです。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。

Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

次のように置き換えます。

--delete-protection は、削除からの保護を有効にするためのオプションの引数です。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。

Terraform
resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

次のように置き換えます。

delete_protection_state は、削除からの保護を有効にするためのオプションの引数です。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。

データベース ID

有効なデータベース ID には、(default) と、次の要件に準拠する ID が含まれます。

  • 使用できるのは英字、数字、ハイフン(-)のみです。
  • 文字は小文字のみを使用できます。
  • 最初の文字は英字でなければなりません。
  • 最後の文字は英字または数字にしてください
  • 4 文字以上。
  • 63 文字以内。
  • UUID、または UUID に似た ID は使用しないでください。たとえば、f47ac10b-58cc-0372-8567-0e02b2c3d479 のような ID は使用しないでください。

データベースを削除すると、5 分経過するまではデータベース ID を再利用することはできません。

削除保護

削除保護を使用すると、データベースの誤削除を防ぐことができます。削除保護を無効にするまで、削除保護が有効になっているデータベースを削除することはできません。削除保護はデフォルトで無効になっています。削除保護は、データベースの作成時に有効にすることも、データベース構成を更新して削除保護を有効にすることもできます。

データベースに Firestore セキュリティ ルールを設定する

Firebase CLI を使用して Firestore セキュリティ ルールを各データベースにデプロイします。詳しくは、Firestore セキュリティ ルールの管理とデプロイに関するガイドをご覧ください。

クライアント ライブラリを使用して名前付きデータベースにアクセスする

名前付きデータベースには、(default) 以外のデータベースが含まれます。デフォルトでは、Firebase SDK と Google API クライアント ライブラリはプロジェクト内の (default) Firestore データベースに接続します。名前付きデータベースに接続されたクライアントを作成するには、クライアントをインスタンス化する際にデータベース ID を設定します。

データベースの一覧取得

データベースを一覧表示するには、次の方法のいずれかを使用します。

コンソール

Google Cloud コンソールで [データベース] ページに移動します。

[データベース] に移動

gcloud

gcloud firestore databases list コマンドを使用して、プロジェクト内のすべてのデータベースを一覧表示します。

gcloud firestore databases list
Firebase CLI
firebase firestore:databases:list

データベースの詳細を表示する

1 つのデータベースの詳細を表示するには、gcloud firestore databases describe コマンドを使用します。

gcloud
gcloud firestore databases describe --database=DATABASE_ID

DATABASE_ID をデータベース ID に置き換えます。

データベース構成を更新する

データベースの構成設定を更新するには、gcloud firestore databases update コマンドを使用します。このコマンドを使用して、データベース タイプの変更、または削除保護の切り替えを行います。

データベースの種類を変更する

データベースの種類を更新するには、--type= フラグを指定して gcloud firestore databases update コマンドを使用します。データベースが空である場合にのみ、種類を変更できます。

gcloud
gcloud firestore databases update --database=DATABASE_ID \
--type=DATABASE_TYPE

次のように置き換えます。

  • DATABASE_ID: データベース ID。
  • DATABASE_TYPE: ネイティブ モードの場合は firestore-native、Datastore モードの場合は datastore-mode

削除保護の設定を更新する

データベースの削除保護を有効にするには、--delete-protection フラグを指定して gcloud firestore databases update コマンドを使用します。次に例を示します。

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

DATABASE_ID をデータベース ID に置き換えます。

データベースの削除保護を無効にするには、--no-delete-protection フラグを指定して gcloud firestore databases update コマンドを使用します。次に例を示します。

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

DATABASE_ID をデータベース ID に置き換えます。

データベースを削除する

データベースを削除するには、コンソールまたはコマンドライン ツールを使用します。

データベースで削除保護の設定が有効になっている場合は、まず削除保護を無効にする必要があります。

データベースに App Engine Search データまたは blob エンティティが含まれている場合は、まずそのデータを削除する必要があります。

データベースを削除しても、そのデータベースの Eventarc トリガーは自動的に削除されません。トリガーはイベントの配信を停止しますが、トリガーを削除するまで存在し続けます。

コンソール
  1. Google Cloud コンソールで [データベース] ページに移動します。

    [データベース] に移動

  2. 削除するデータベースのテーブル行にある [さらに表示] をクリックします。[削除] をクリックします。ダイアログが表示されます。
  3. [データベースを削除しますか?] ダイアログのテキスト フィールドにデータベース ID を入力して、削除を確定します。[削除] をクリックします。オペレーションの成功または失敗がコンソールに表示されます。

    オペレーションが失敗した場合は、データベースの詳細を表示し、削除保護が無効になっていることを確認します。削除保護を無効にするには、削除保護の設定を更新するをご覧ください。

gcloud

「gcloud firestore databases delete」コマンドを使用します。

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID は、削除するデータベース ID に置き換えます。

データベースごとのアクセス権限を構成する

Identity and Access Management の条件を使用して、データベースごとにアクセス権限を構成できます。次の例では、Google Cloud CLI を使用して 1 つ以上のデータベースに条件付きアクセスを割り当てます。Google Cloud コンソールで IAM 条件を定義することもできます。

既存の IAM ポリシーを表示する

gcloud projects get-iam-policy PROJECT_ID

プロジェクト ID に PROJECT_ID を設定します。

データベースへのアクセス権を付与する

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定の Google アカウントを表すメールアドレス。例: alice@example.com
  • DATABASE_ID: データベース ID。
  • TITLE: 式のタイトル(省略可)。
  • DESCRIPTION: 式の説明(省略可)。

1 つを除くすべてのデータベースにアクセス権を付与する

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定の Google アカウントを表すメールアドレス。例: alice@example.com
  • DATABASE_ID: データベース ID。
  • TITLE: 式のタイトル(省略可)。
  • DESCRIPTION: 式の説明(省略可)。

特定のメンバーとロールのポリシーを削除する

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定の Google アカウントを表すメールアドレス。例: alice@example.com

Cloud Monitoring

Firestore の指標は、2 つのモニタリング対象リソースで報告されます。

集計指標は、firestore.googleapis.com/Database を確認するとデータベース レベルで調べることができます。firestore_instance で報告される指標は、プロジェクト レベルで集計されます。

制限事項

  • 作成できるデータベースはプロジェクトあたり最大 100 個です。この上限の引き上げをリクエストするには、サポートにお問い合わせください。
  • GAE 検索データが含まれている (default) データベースは削除できません。GAE 検索データを削除するには、index delete api を使用してください。GAE 検索データを最近削除した場合は、データベースを削除できるようになるまでに時間がかかることがあります。
  • blob エンティティが含まれている (default) データベースは削除できません。Blobstore データを削除するには、Blobstore delete API を使用してください。(default) データベースに Blobstore データがあるかどうかを確認するには、Google Cloud コンソールで GQL クエリ SELECT * FROM __BlobInfo__ を実行します。
  • 削除した後は 5 分経過するまでデータベース ID を再利用できません。
  • Cloud Functions v1 は、Firestore の名前付きデータベースをサポートしていません。Cloud Firestore トリガー(第 2 世代)を使用して、名前付きデータベースのイベントを構成してください。
  • Firestore 関数トリガー v1Firestore イベント トリガーは、データベースが削除された後に、たとえ同じ名前で新しいデータベースを作成した場合も、動作しなくなる場合があります。

次のステップ