Datastore モードの Cloud Firestore の使用

Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQL ドキュメント データベースです。これは Datastore の最新バージョンで、Datastore のいくつかの点が改善されています。

Datastore モードの Firestore(Datastore)は、サーバーのユースケースと App Engine 用に最適化されているため、主に App Engine アプリで使用されるデータベースには Firestore を Datastore モードで使用することをおすすめします。ネイティブ モードの Firestore は、モバイルとリアルタイムの通知のユースケースに最適です。Firestore モードの詳細については、ネイティブ モードと Datastore モードからの選択をご覧ください。

App Engine での Datastore モードの使用

App Engine で Datastore モードを使用するには:

  1. まだ作成していない場合は、データベースを作成し、Datastore モードの Firestore を選択します。

    既存の Datastore データベースは、App Engine アプリで使用できます。その場合、既存のデータベースは Datastore モードの Firestore に自動的にアップグレードされます。

  2. ライブラリをアプリの依存関係ファイルに追加して、アプリ内で Datastore を依存関係として宣言します。

  3. Google Cloud クライアント ライブラリを使用して、エンティティの読み取り / 書き込みデータのクエリを行います。

インデックスの構成

Datastore モードでは、アプリケーションが作成するすべてのクエリに対してインデックスを使用します。インデックスはエンティティが変更されるたびに更新されるので、アプリからのクエリに対してすばやく結果を返すことができます。

Datastore モードでは、単純な種類のクエリで使用する単一プロパティのインデックスを自動的に作成します。複数のプロパティを含む複雑なクエリについては、アプリの index.yaml ファイル内に複合インデックスを構成する必要があります。

App Engine 開発用サーバーは、テストを実行するために必要な複合インデックスを使用して index.yaml ファイルを更新します。同様に、テストを実行する際は Datastore モード エミュレータでインデックスを生成できます。

ローカルテストを実行しない場合や、テストに複雑なクエリが含まれていない場合は、アプリの index.yaml ファイルに手動でインデックスを追加することもできます。

データベース権限の設定

デフォルトでは、Google Cloud プロジェクト内の Datastore モードと Firestore データベースに対して読み取り / 書き込みを行うために必要なすべての権限がアプリに付与されます。

これらの権限を管理するために、App Engine アプリのそれぞれがデフォルトのサービス アカウントを使用します。デフォルトのサービス アカウントにより、アプリには同じプロジェクト内にある Datastore モードと Firestore データベースに対して読み取りと書き込みを行うための完全アクセス権が与えられます。デフォルトのサービス アカウントの権限を変更することはできますが、必要な権限を IAM ロールに割り当てなければ、アプリがデータベースにアクセスできなくなる可能性があります。

他のユーザー、アプリ、プロジェクトにデータベースへのアクセスを許可する方法については、データベースへのアクセスをご覧ください。

ローカルテストでの Datastore モード エミュレータの使用

Google Cloud CLI for Java には、ローカルの開発用サーバーが含まれています。このサーバーを使用すると、手元にあるマシン上でアプリケーションをテストできます。ローカルの開発用サーバーは、App Engine の Java Runtime Environment や Datastore モードなどのすべてのサービスをエミュレートします。

開発用サーバーは、テスト中にアプリケーションが実行するクエリに基づいて、そのアプリケーションに必要な Datastore モードのインデックス構成を生成します。

料金、割り当て、制限

Datastore モードでは、一定の割り当て量を無料で使用できます(1 日の使用量に上限があります)。有料アカウントの場合には、保存、読み取り、書き込みオペレーションを無制限で行うことができます。詳細については、データストアの割り当てをご覧ください。