Closed4

単一プロジェクト内で複数Firestore Databeseを使い分ける

sugar-catsugar-cat

単一プロジェクト内で複数Firestore Databeseを使い分ける
https://cloud.google.com/blog/products/databases/manage-multiple-firestore-databases-in-a-project?hl=en

少し前に Google Cloud プロジェクトで複数の Firestore データベースをサポートすることが発表された。
これによってプロジェクトごとに DB を作り直したり、Collection ベースでの環境(dev, stage, prod)を分離する必要はなくなった。

sugar-catsugar-cat
  • Terraform や gcloud CLI から DB を作成可能
  • 異なる Firestore データベースに異なるセキュリティポリシーを適用可能
  • Firestore Native Mode と Datastore Mode をサポート※
  • 全ての Firestore リージョンをサポート

※同一プロジェクトではネイティブ モードと Datastore モードの両方を使用することはできないので同じモードを使用する必要あり。
https://cloud.google.com/firestore/docs/firestore-or-datastore?hl=en

sugar-catsugar-cat
  • Firestore データベースを作成する
# database1
$ gcloud firestore databases create --database=test1 --location=asia-east1 --type=firestore-native

# database2
$ gcloud firestore databases create --database=test2 --location=asia-east1 --type=firestore-native
  • 使用例: Go の場合
func main() {
	ctx := context.Background()

	projectID := ""
	databaseID := ""
        // 作成したdatabase名を指定
	client, err := firestore.NewClientWithDatabase(ctx, projectID, databaseID)
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}
	defer client.Close()

	// write
	ref, _, err := client.Collection("users").Add(ctx, map[string]interface{}{})
}

Go の Firestore sdk の場合 v1.13.0 以降でないと database を指定できない
https://pkg.go.dev/cloud.google.com/go/firestore#NewClientWithDatabase

sugar-catsugar-cat

セキュリティルールは各Databaseごとに設定可能

このスクラップは2023/11/11にクローズされました