注: 新しいアプリケーションを作成する際は、NDB クライアント ライブラリを使用することを強くおすすめします。NDB クライアント ライブラリには、Memcache API によるエンティティの自動キャッシュをはじめ、このクライアント ライブラリにはないメリットがあります。古い DB クライアント ライブラリを現在使用している場合は、DB から NDB への移行ガイドをお読みください。
データストアは、アプリケーション用に保存されているデータに関する統計情報を維持します。たとえば特定の種類のエンティティ数や特定の型のプロパティ値が使用している容量などです。このような統計情報は Google Cloud コンソールの [ダッシュボード] ページで確認できます。
このような値には、アプリケーション内でプログラミングによってアクセスすることもできます。その場合、Datastore API を使用して特別な名前のエンティティに対してクエリを実行します。各統計情報は、エンティティとしてアクセスできます。このようなエンティティの名前は、先頭と末尾が 2 本のアンダースコアになっています。たとえば各アプリには __Stat_Total__
という種類のエンティティが 1 つだけ存在し、これは 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
エンティティに対してクエリを実行し、他の統計情報エンティティをフェッチするときは、そのタイムスタンプ値をフィルタとして使用することをおすすめします。
統計情報エンティティは、計算済みの統計情報値に含まれます。統計情報エンティティは、アプリケーションが使用する一意の種類とプロパティ名の数に比例して容量を消費します。
統計情報システムは、各名前空間に固有の統計情報も作成します。アプリケーションが 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__ 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 |
特定の種類のエンティティ全体のプロパティで、特定の名前を持ち、特定の値の型のプロパティとなっているもの。プロパティ名、値の型、データストアに存在する種類の組み合わせごとに 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"