注: 新しいアプリケーションを作成する際は、NDB クライアント ライブラリを使用することを強くおすすめします。NDB クライアント ライブラリには、Memcache API によるエンティティの自動キャッシュをはじめ、DB クライアント ライブラリにはないメリットがあります。古い DB クライアント ライブラリを使用している場合は、DB から NDB への移行ガイドをお読みください。
Cloud Datastore は、指定の種類のエンティティの数や指定のタイプのプロパティ値に使用されている領域など、アプリケーションのために保存されているデータの統計情報を維持します。このような統計情報は GCP Console の [ダッシュボード] ページで確認できます。
また、アプリケーション内でプログラミングによってこれらの値にアクセスすることもできます。その場合、Cloud Datastore API を使って特定の名前のエンティティをクエリします。各統計情報には、先頭と末尾に 2 つのアンダースコアが付いた種類名を持つエンティティとしてアクセスできます。たとえば各アプリには __Stat_Total__
という種類のエンティティが 1 つだけ存在し、これは Cloud Datastore 内の全エンティティの合計に関する統計情報を表します。各統計情報エンティティには、次のプロパティがあります。
count
: 統計情報で認識されている項目数(長整数)bytes
: 統計情報の項目の合計サイズ(長整数)timestamp
: 統計情報が最後に更新された時刻(日時値)
統計情報の一部の種類には、その他に下記で示すプロパティも用意されています。
Python アプリケーションでは、パッケージ google.appengine.ext.db.stats
で提供されるモデルクラスを使用して統計エンティティにアクセスできます。
from google.appengine.ext.db import stats
global_stat = stats.GlobalStat.all().get()
print 'Total bytes stored: %d' % global_stat.bytes
print 'Total entities stored: %d' % global_stat.count
統計情報システムが新しい統計情報エンティティを作成しても、古いエンティティが直ちに削除されるわけではありません。一貫性のある統計情報を取得する最善の方法として、最新の timestamp
を持つ GlobalStat
エンティティをクエリした後、他の統計情報エンティティを取得するときに、そのタイムスタンプ値をフィルタとして使用することをおすすめします。
統計情報エンティティは、計算済みの統計情報値に含まれます。統計情報エンティティは、アプリケーションで使用される一意の種類とプロパティ名の数に比例して容量を消費します。
また、統計情報システムは、それぞれの名前空間に固有の統計情報も作成します。アプリケーションが Cloud Datastore 名前空間を使用しない場合、名前空間に固有の統計情報が作成されないことに注意してください。それぞれの名前空間に固有の統計情報は、その名前空間の中に存在します。名前空間に固有の統計情報の種類名には接頭辞として __Stat_Ns_
が付加され、アプリケーション全体の統計情報の種類と同じ対応する接尾辞が付きます。
何千もの名前空間、種類、プロパティ名を使用するアプリケーションでは、非常に多数の統計情報エンティティが必要になります。統計情報の格納と更新にかかるオーバーヘッドを合理的な範囲に収めるために、Cloud Datastore では次の順序で統計情報エンティティが順次破棄されていきます。
- 名前空間、種類、プロパティに基づく統計情報:
__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__ Python クラス: GlobalStat 名前空間に固有のエントリ: __Stat_Ns_Total__ Python クラス: NamespaceGlobalStat |
すべてのエンティティ。追加プロパティは次のとおりです。 • entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックス エントリのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数• composite_index_bytes : 複合インデックス エントリのストレージ サイズ(バイト単位)• composite_index_count : 複合インデックスのエントリ数 |
名前空間内のすべてのエンティティ | __Stat_Namespace__ Python クラス: NamespaceStat __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__ Python クラス: KindStat |
複合インデックス テーブル内のエントリ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • index_id : インデックス ID• kind_name : 種類名の表現(文字列) |
種類のエンティティ | __Stat_Kind__ Python クラス: KindStat 名前空間に固有のエントリ: __Stat_Ns_Kind__ Python クラス: NamespaceKindStat |
種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックス エントリのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数• composite_index_bytes : 複合インデックス エントリのストレージ サイズ(バイト単位)• composite_index_count : 複合インデックスのエントリ数 |
種類のルート エンティティ | __Stat_Kind_IsRootEntity__ Python クラス: KindRootEntityStat 名前空間に固有のエントリ: __Stat_Ns_Kind_IsRootEntity__ Python クラス: NamespaceKindRootEntityStat |
エンティティ グループのルート エンティティ(祖先となる親を持たないエンティティ)となっている種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位) |
種類の非ルート エンティティ | __Stat_Kind_NotRootEntity__ Python クラス: KindNotRootEntityStat 名前空間に固有のエントリ: __Stat_Ns_Kind_NotRootEntity__ Python クラス: NamespaceKindNotRootEntityStat |
エンティティ グループの非ルート エンティティ(祖先となる親を持つエンティティ)となっている種類のエンティティ。格納されているエンティティの種類ごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位) |
型のプロパティ | __Stat_PropertyType__ Python クラス: PropertyTypeStat 名前空間に固有のエントリ: __Stat_Ns_PropertyType__ Python クラス: NamespacePropertyTypeStat |
すべてのエンティティにわたる値の型のプロパティ。値の型ごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • property_type : 値の型の名前(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックス エントリのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数 |
種類ごとの型のプロパティ | __Stat_PropertyType_Kind__ Python クラス: KindPropertyTypeStat 名前空間に固有のエントリ: __Stat_Ns_PropertyType_Kind__ Python クラス: NamespaceKindPropertyTypeStat |
特定の種類のエンティティにわたる値の型のプロパティ。プロパティの型と種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • property_type : 値の型の名前(文字列)• kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックスのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数 |
名前を持つプロパティ | __Stat_PropertyName_Kind__ Python クラス: KindPropertyNameStat 名前空間に固有のエントリ: __Stat_Ns_PropertyName_Kind__ Python クラス: NamespaceKindPropertyNameStat |
特定の種類のエンティティにわたる特定の名前を持つプロパティ。一意のプロパティ名と種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • property_name : プロパティの名前(文字列)• kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックス エントリのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数 |
名前を持つ型のプロパティ | __Stat_PropertyType_PropertyName_Kind__ Python クラス: KindPropertyNamePropertyTypeStat 名前空間に固有のエントリ: __Stat_Ns_PropertyType_PropertyName_Kind__ Python クラス: NamespaceKindPropertyNamePropertyTypeStat |
特定の種類のエンティティにわたるプロパティで、特定の名前を持ち、特定の値の型のプロパティとなっているもの。プロパティ名、値の型、Cloud Datastore に存在する種類の組み合わせごとに 1 つの統計情報エンティティが作成されます。追加プロパティは次のとおりです。 • property_type : 値の型の名前(文字列)• property_name : プロパティの名前(文字列)• kind_name : 種類名の表現(文字列)• entity_bytes : エンティティ テーブルのストレージ サイズ(バイト単位)• builtin_index_bytes : 組み込みインデックス エントリのストレージ サイズ(バイト単位)• builtin_index_count : 組み込みインデックスのエントリ数 |
一部の統計情報は、Cloud Datastore プロパティ値の型を文字列として名前で参照します。名前は次のとおりです。
"Blob"
"BlobKey"
"Boolean"
"Category"
"Date/Time"
"Email"
"Float"
"GeoPt"
"IM"
"Integer"
"Key"
"Link"
"NULL"
"PhoneNumber"
"PostalAddress"
"Rating"
"ShortBlob"
"String"
"Text"
"User"