従来のバンドル サービスの Datastore 統計情報

データストアは、アプリケーション用に保存されているデータに関する統計情報を維持します。たとえば特定の種類のエンティティ数や特定の型のプロパティ値が使用している容量などです。このような統計情報は Cloud Console の [ダッシュボード] ページで確認できます。

このような値には、アプリケーション内でプログラミングによってアクセスすることもできます。その場合、Datastore API を使用して特別な名前のエンティティに対してクエリを実行します。各統計情報は、エンティティとしてアクセスできます。このようなエンティティの名前は、先頭と末尾が 2 本のアンダースコアになっています。たとえば各アプリには __Stat_Total__ という種類のエンティティが 1 つだけ存在し、これは Datastore の全エンティティの合計に関する統計情報を表します。各統計情報エンティティには、次のプロパティがあります。

  • count: 統計情報で認識されている項目数(長整数)
  • bytes: 統計情報の項目の合計サイズ(長整数)
  • timestamp: 統計情報が最後に更新された時刻(日時値)

統計情報の一部の種類には、その他に下記で示すプロパティも用意されています。

Java アプリケーションでは、低レベル API を使用して統計エンティティにアクセスできます。次に例を示します。

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity globalStat = datastore.prepare(new Query("__Stat_Total__")).asSingleEntity();
Long totalBytes = (Long) globalStat.getProperty("bytes");
Long totalEntities = (Long) globalStat.getProperty("count");

統計情報システムが新しい統計情報エンティティを作成しても、古いエンティティがすぐに削除されるわけではありません。整合性のある統計情報を取得する最善の方法として、最新の timestamp を持つ __Stat_Total__ エンティティに対してクエリを実行し、他の統計情報エンティティをフェッチするときは、そのタイムスタンプ値をフィルタとして使用することをおすすめします。

統計情報エンティティは、計算済みの統計情報値に含まれます。統計情報エンティティは、アプリケーションが使用する一意の種類とプロパティ名の数に比例して容量を消費します。

統計情報システムは、各名前空間に固有の統計情報も作成します。アプリケーションが Datastore の名前空間を使用していない場合は、名前空間に固有の統計情報が作成されません。それぞれの名前空間に固有の統計情報は、その名前空間の中に存在します。名前空間に固有の統計情報の種類名には接頭辞として __Stat_Ns_ が付加され、アプリケーション全体の統計情報の種類と同じ対応する接尾辞が付きます。

何千もの名前空間、種類、プロパティ名を使用するアプリケーションでは、非常に多数の統計情報エンティティが必要になります。統計情報の格納と更新にかかるオーバーヘッドを合理的な範囲に収めるため、統計情報エンティティは次の順序で順次破棄されていきます。

  • 名前空間、種類、プロパティに基づく統計情報: __Stat_Ns_PropertyName_Kind____Stat_Ns_PropertyType_PropertyName_Kind__
  • 種類とプロパティに基づく統計情報: __Stat_PropertyName_Kind____Stat_PropertyType_PropertyName_Kind__
  • 名前空間と種類に基づく統計情報: __Stat_Ns_Kind____Stat_Ns_Kind_IsRootEntity____Stat_Ns_Kind_NotRootEntity____Stat_Ns_PropertyType_Kind__
  • 種類に基づく統計情報: __Stat_Kind____Stat_Kind_IsRootEntity____Stat_Kind_NotRootEntity____Stat_PropertyType_Kind__
  • 名前空間に基づく統計情報: __Stat_Namespace____Stat_Ns_Kind_CompositeIndex____Stat_Ns_PropertyType____Stat_Ns_Total__

要約統計情報のエンティティ(__Stat_Kind_CompositeIndex____Stat_PropertyType____Stat_Total__)は破棄されません。

次に、使用可能なすべての統計情報をまとめたリストを示します。

統計情報 統計情報エンティティの種類 説明
すべてのエンティティ __Stat_Total__
名前空間に固有のエントリ:
__Stat_Ns_Total__
すべてのエンティティ。追加プロパティ:

entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
composite_index_bytes: 複合インデックス エントリのストレージ サイズ(バイト単位)
composite_index_count: 複合インデックスのエントリ数
名前空間内のすべてのエンティティ __Stat_Namespace__
__Stat_Namespace__ エンティティは名前空間が発生するたびに作成され、空文字列の名前空間にのみ存在する点に注意してください。
名前空間内のすべてのエンティティ。

subject_namespace: 名前空間の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
composite_index_bytes: 複合インデックス エントリのストレージ サイズ(バイト単位)
composite_index_count: 複合インデックスのエントリ数
アプリケーション定義のインデックス内のすべてのエントリ __Stat_Kind_CompositeIndex__
名前空間に固有のエントリ: __Stat_Ns_Kind_CompositeIndex__
複合インデックス テーブル内のエントリ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加プロパティ:

index_id: インデックス ID
kind_name: 種類名の表現(文字列)
種類のエンティティ __Stat_Kind__
名前空間に固有のエントリ:
__Stat_Ns_Kind__
種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
composite_index_bytes: 複合インデックス エントリのストレージ サイズ(バイト単位)
composite_index_count: 複合インデックスのエントリ数
種類のルート エンティティ __Stat_Kind_IsRootEntity__
名前空間に固有のエントリ:
__Stat_Ns_Kind_IsRootEntity__
エンティティ グループのルート エンティティ(祖先となる親を持たないエンティティ)となっている種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
種類の非ルート エンティティ __Stat_Kind_NotRootEntity__
名前空間に固有のエントリ:
__Stat_Ns_Kind_NotRootEntity__
エンティティ グループの非ルート エンティティ(祖先となる親を持つエンティティ)となっている種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
型のプロパティ __Stat_PropertyType__
名前空間に固有のエントリ:
__Stat_Ns_PropertyType__
すべてのエンティティにわたる値の型のプロパティ。値の型ごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

property_type: 値の型の名前(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
種類ごとの型のプロパティ __Stat_PropertyType_Kind__
名前空間に固有のエントリ:
__Stat_Ns_PropertyType_Kind__
特定の種類のエンティティにわたる値の型のプロパティ。プロパティの型と種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

property_type: 値の型の名前(文字列)
kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックスのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
名前を持つプロパティ __Stat_PropertyName_Kind__
名前空間に固有のエントリ:
__Stat_Ns_PropertyName_Kind__
特定の種類のエンティティにわたる特定の名前を持つプロパティ。一意のプロパティ名と種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

property_name: プロパティの名前(文字列)
kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数
名前を持つ型のプロパティ __Stat_PropertyType_PropertyName_Kind__
名前空間に固有のエントリ:
__Stat_Ns_PropertyType_PropertyName_Kind__
特定の種類のエンティティ全体のプロパティで、特定の名前を持ち、特定の値の型のプロパティとなっているもの。プロパティ名、値の型、データストアに存在する種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加のプロパティ:

property_type: 値の型の名前(文字列)
property_name: プロパティの名前(文字列)
kind_name: 種類名の表現(文字列)
entity_bytes: エンティティ テーブルのストレージ サイズ(バイト単位)
builtin_index_bytes: 組み込みインデックス エントリのストレージ サイズ(バイト単位)
builtin_index_count: 組み込みインデックスのエントリ数

一部の統計情報は、データストアのプロパティ値の型を文字列の名前で参照します。名前は次のとおりです。

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"