Cloud Firestore の Datastore モードでの使用

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

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

App Engine での Datastore モードの使用

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

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

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

    1. アプリ内で、go get cloud.google.com/go/datastore コマンドを使用して、Datastore を依存関係として宣言します。あるいは、アプリの go.mod ファイル内で依存関係を宣言することもできます。詳しくは、依存関係を指定する方法をご覧ください。

    2. 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 には、ローカルで本番環境の Datastore モードをエミュレートするエミュレータが含まれています。このエミュレータを使用して、アプリケーションをローカルで開発およびテストできます。さらに、このエミュレータを使用すると、本番環境用 Datastore モードのインスタンスのインデックスを生成できます。また、不要なインデックスを削除することもできます。

    App Engine のローカル開発用サーバーを使用してアプリをテストする場合、サーバーで Datastore モード エミュレータが使用されるようにするには、サーバーの起動時に --support_datastore_emulator=true フラグを設定します。

    Datastore モード エミュレータが使用されている場合は、dev_appserver に次のメッセージが表示されます。

    ... Using Cloud Datastore Emulator.
    

    料金、割り当て、制限

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