データベースの作成と管理
このページでは、MongoDB 互換の Firestore データベースを作成、更新、削除する方法について説明します。プロジェクトごとに複数の Firestore データベースを作成できます。複数のデータベースを使用して、本番環境とテスト環境の設定、顧客データの分離、データのリージョン指定を行うことができます。
無料枠の使用量
Firestore には、費用をかけずに使い始めることができる無料枠が用意されています。
無料枠は、プロジェクトごとに 1 つの Firestore データベースにのみ適用されます。無料枠のデータベースがないプロジェクトで最初に作成されたデータベースには、無料枠が適用されます。無料枠が適用されたデータベースが削除されると、次に作成されるデータベースに無料枠が適用されます。
始める前に
データベースを作成する前に、次の操作を行う必要があります。
-
Verify that billing is enabled for your Google Cloud project.
- 次のセクションの説明に沿って、適切な Identity and Access Management ロールを割り当てます。
必要なロール
データベースを作成して管理するには、Owner
または Datastore Owner
の Identity and Access Management ロールが必要です。これらのロールにより必要な権限が付与されます。
必要な権限
データベースを管理するには、次の権限が必要です。
- データベースを作成する:
datastore.databases.create
- データベース構成を読み取る:
datastore.databases.getMetadata
- データベースを構成する:
datastore.databases.update
- データベースを削除する:
datastore.databases.delete
- データベースのクローンを作成する:
datastore.databases.clone
データベースの作成
MongoDB 互換の Firestore データベースを作成するには、次のいずれかの方法を使用します。
Google Cloud コンソール
-
Google Cloud コンソールで、[データベース] ページに移動します。
- [Firestore データベースを作成] をクリックします。
- データベース ID を入力します。
- [Enterprise Edition] を選択します。
- データベースのロケーションを選択します。
- (省略可)暗号化をカスタマイズする必要がある場合は、[暗号化オプションを表示] をクリックして、暗号化オプションを構成します。
- [データベースを作成] をクリックします。
gcloud CLI
gcloud firestore databases create
コマンドを使用して、--edition=enterprise
を設定します。
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise
次のように置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: MongoDB 互換の Firestore マルチリージョンまたはリージョンの名前。
削除保護を有効にするには、--delete-protection
フラグを追加します。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise \ --delete-protection
データベースにタグを追加するには、--tags
フラグを使用します。次に例を示します。
--tags=123/environment=production,123/costCenter=marketing
--tags=tagKeys/333=tagValues/444
Terraform
google_firestore_database
リソースを使用して、database_edition
を ENTERPRISE
に設定します。
resource "google_firestore_database" "database" { name = "DATABASE_ID" location_id = "LOCATION" type = "FIRESTORE_NATIVE" database_edition = "ENTERPRISE" // Optional delete_protection_state = "DELETE_PROTECTION_STATE" }
次のように置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: MongoDB 互換の Firestore マルチリージョンまたはリージョンの名前。
- DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
またはDELETE_PROTECTION_DISABLED
。
削除保護を有効にするには、delete_protection_state
を DELETE_PROTECTION_ENABLED
に設定します。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。
データベース ID
有効なデータベース ID には、次の要件に準拠する ID が含まれます。
- 使用できるのは英字、数字、ハイフン(
-
)のみです。 - 文字は小文字のみを使用できます。
- 最初の文字は英字でなければなりません。
- 最後の文字は英字または数字にしてください
- 4 文字以上。
- 63 文字以内。
- UUID、または UUID に似た ID は使用しないでください。たとえば、
f47ac10b-58cc-0372-8567-0e02b2c3d479
のような ID は使用しないでください。
データベースを削除すると、5 分経過するまではデータベース ID を再利用することはできません。
削除保護
削除保護を使用すると、データベースの誤削除を防ぐことができます。削除保護は次のように機能します。
- 削除保護を無効にするまで、削除保護が有効になっているデータベースを削除することはできません。
- 削除保護はデフォルトで無効になっています。
- 削除保護は、データベースの作成時に有効にすることも、データベース構成を更新して削除保護を有効にすることもできます。
データベースの一覧取得
データベースを一覧表示するには、次の方法のいずれかを使用します。
コンソール
Google Cloud コンソールで、[データベース] ページに移動します。
gcloud CLI
gcloud firestore databases list
コマンドを使用して、プロジェクト内のすべてのデータベースを一覧表示します。
gcloud firestore databases list
データベースの詳細を表示する
単一のデータベースの詳細を表示するには、次のいずれかの方法を使用します。
コンソール
-
Google Cloud コンソールで、[データベース] ページに移動します。
- データベースのリストからデータベースを選択します。
gcloud CLI
gcloud firestore databases describe
コマンドを使用します。
gcloud firestore databases describe --database=DATABASE_ID
DATABASE_ID をデータベース ID に置き換えます。
データベース構成を更新する
データベースの構成設定を更新するには、gcloud firestore databases update
コマンドを使用します。
このコマンドを使用して、削除保護を変更、有効化、無効化します。
削除保護の設定を更新する
データベースの削除保護を有効にするには、--delete-protection
フラグを指定して gcloud firestore databases update
コマンドを使用します。次に例を示します。
gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection
DATABASE_ID をデータベース ID に置き換えます。
データベースの削除保護を無効にするには、--no-delete-protection
フラグを指定して gcloud firestore databases update
コマンドを使用します。次に例を示します。
gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
DATABASE_ID をデータベース ID に置き換えます。
データベースを削除する
データベースを削除するには、コンソールまたはコマンドライン ツールを使用します。データベースを削除しても、削除オペレーションの料金は発生しません。
データベースで削除保護の設定が有効になっている場合は、まず削除保護を無効にする必要があります。
Google Cloud コンソール
-
Google Cloud コンソールで、[データベース] ページに移動します。
- 削除するデータベースの [アクション] 列にある [さらに表示] をクリックします。[削除] をクリックします。ダイアログが表示されます。
[データベースを削除しますか?] ダイアログのテキスト フィールドにデータベース ID を入力して、削除を確定します。[削除] をクリックします。オペレーションの成功または失敗がコンソールに表示されます。
オペレーションが失敗した場合は、データベースの詳細を表示し、削除保護が無効になっていることを確認します。削除保護を無効にするには、削除保護の設定を更新するをご覧ください。
gcloud CLI
「gcloud firestore databases delete」コマンドを使用します。
gcloud firestore databases delete --database=DATABASE_ID
DATABASE_ID は、削除するデータベース ID に置き換えます。
データベースのクローンを作成する
選択したタイムスタンプの既存のデータベースを新しいデータベースに複製できます。
クローン作成されたデータベースは、ソース データベースと同じロケーションに作成される新しいデータベースです。
クローンを作成するために、Firestore はソース データベースのポイントインタイム リカバリ(PITR)データを使用します。クローン作成されたデータベースには、すべてのデータとインデックスが含まれます。
デフォルトでは、クローン データベースは、Google のデフォルトの暗号化または CMEK 暗号化を使用して、ソース データベースと同じ方法で暗号化されます。別の暗号化タイプを指定するか、CMEK 暗号化に別の鍵を使用できます。
タイムスタンプの粒度は 1 分で、PITR ウィンドウで定義された期間内の過去の時点を指定します。
- データベースで PITR が有効になっている場合は、過去 7 日間の任意の分を選択します(PITR が 7 日未満前に有効になった場合は、それより短い期間になります)。
- PITR が有効になっていない場合は、過去 1 時間以内の任意の時刻(分)を選択できます。
- 選択できる最も古いタイムスタンプは、データベースの説明で確認できます。
コンソール
Google Cloud コンソールで、[データベース] ページに移動します。
複製するデータベースのテーブル行にある
[さらに表示] をクリックします。[Clone] をクリックします。[クローンを作成] ダイアログが表示されます。[クローンを作成] ダイアログで、データベースのクローンを作成するためのパラメータを指定します。
[クローンの ID を設定] フィールドに、新しいクローン データベースのデータベース ID を入力します。このデータベース ID は、既存のデータベースに関連付けられていてはなりません。
[クローン元] フィールドで、クローニングに使用する時点を選択します。選択した時間は、分単位の PITR タイムスタンプに対応します。
[クローンを作成] をクリックします。
gcloud
gcloud alpha firestore databases clone
コマンドを使用して、データベースのクローンを作成します。
gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
次のように置き換えます。
SOURCE_DATABASE_ID: クローンを作成する既存のデータベースのデータベース ID。
PITR_TIMESTAMP: 分単位の RFC 3339 形式の PITR タイムスタンプ。たとえば、
2025-06-01T10:20:00.00Z
や2025-06-01T10:30:00.00-07:00
です。DESTINATION_DATABASE_ID: 新しいクローン データベースのデータベース ID。このデータベース ID は、既存のデータベースに関連付けられていてはなりません。
例:
gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'
クローン作成されたデータベースの暗号化構成を変更する
デフォルトでは、クローン データベースはソース データベースと同じ暗号化構成になります。暗号化構成を変更するには、--encryption-type
引数を使用します。
- (デフォルト)
use-source-encryption
: 移行元データベースと同じ暗号化構成を使用します。 google-default-encryption
: Google のデフォルトの暗号化を使用します。customer-managed-encryption
: CMEK 暗号化を使用します。--kms-key-name
引数でキー ID を指定します。
次の例は、クローン作成されたデータベースの CMEK 暗号化を構成する方法を示しています。
gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
データベースごとのアクセス権限を構成する
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
: プロジェクト IDEMAIL
: 特定のアカウントを表すメールアドレス。例: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
: プロジェクト IDEMAIL
: 特定のアカウントを表すメールアドレス。例: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
: プロジェクト IDEMAIL
: 特定のアカウントを表すメールアドレス。例:alice@example.com
制限事項
プロジェクトごとに最大 100 個のデータベースを作成できます。この上限の引き上げをリクエストするには、サポートにお問い合わせください。
次のステップ
- クイックスタート: データベースを作成して接続するを実行します。
- 動作の違いについて学習する。
- MongoDB 互換の Firestore の Cloud Monitoring 指標について学習する。