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 に自動的にアップグレードされます。

  2. Cloud NDB を使用して、

    Datastore モードのデータベースのエンティティを作成、取得、管理します。

Python 2 アプリを Python 3 にアップグレードすることを計画している場合は、次のオプションがあります。

  • Python 2 アプリが Datastore とのやりとりに App Engine NDB を使用している場合は、Datastore モードのクライアント ライブラリではなく、Cloud NDB に移行することをおすすめします。後者のほうが、より類似したユーザー エクスペリエンスが提供されます。

  • App Engine NDB を使用する Python 2 アプリを Python 3 に移行してから、Cloud NDB に移行することもできます。Python 3 で App Engine NDB にアクセスする方法については、Python 3 用 App Engine バンドル サービスへのアクセスをご覧ください。

追加リソースの詳細と、App Engine NDB を使用した Python 2 webapp アプリから、App Engine NDB を有効にした同等の Python 3 Flask アプリへの移行の例については、Python 3 バンドル サービスのページをご覧ください。

インデックスの構成

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

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

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

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

データベース権限の設定

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

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

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

料金、割り当て、制限

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