Python 2 中的資料儲存庫統計資料

附註: 強烈建議建構新應用程式的開發人員使用 NDB 用戶端程式庫。相較於此用戶端程式庫,NDB 用戶端程式庫有幾項優點,例如能透過 Memcache API 自動快取實體。若您目前使用舊版的「DB 用戶端程式庫」,請參閱將 DB 升級至 NDB 的移轉指南

Cloud Datastore 會留存與應用程式預存資料相關的統計資料,例如有多少實體符合特定種類,或者特定類型的屬性值使用多少空間。您可以在 GCP 主控台的資訊主頁頁面查看這些統計資料。

您也可以使用 Cloud Datastore API 查詢名稱特殊的實體,透過程式在應用程式內部存取這些值。只要實體種類名稱的開頭和結尾有兩條底線,就可以存取其中的每項統計資料。例如,每個應用程式都只有一個屬於 __Stat_Total__ 種類的實體,這個實體代表與 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
複合式索引表中的項目;每一個統計資料分別代表一種既存實體。其他屬性:

index_id:索引 ID。
kind_name:代表種類的名稱 (字串)
某個種類的實體 __Stat_Kind__
Python 類別:KindStat
命名空間專用項目:
__Stat_Ns_Kind__
Python 類別:NamespaceKindStat
屬於某個種類的實體;每一個統計資料分別代表一種既存實體。其他屬性:

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
某個種類的實體,該實體為實體群組根實體 (沒有祖系父項);每一個統計資料分別代表一種既存實體。其他屬性:

kind_name:代表種類的名稱 (字串)
entity_bytes:實體資料表的儲存空間,以位元組為單位。
某個種類的非根實體 __Stat_Kind_NotRootEntity__
Python 類別:KindNotRootEntityStat
命名空間專用項目:
__Stat_Ns_Kind_NotRootEntity__
Python 類別:NamespaceKindNotRootEntityStat
某個種類的實體,該實體不是實體群組根實體 (有祖系父項);每一個統計資料分別代表一種既存實體。其他屬性:

kind_name:代表種類的名稱 (字串)
entity_bytes:實體資料表的儲存空間,以位元組為單位。
某個類型的屬性 __Stat_PropertyType__
Python 類別:PropertyTypeStat
命名空間專用項目:
__Stat_Ns_PropertyType__
Python 類別:NamespacePropertyTypeStat
所有實體之值類型的屬性;每一個統計資料分別代表一種既存實體。其他屬性:

property_type:值類型的名稱 (字串)
entity_bytes:實體資料表的儲存空間,以位元組為單位。
builtin_index_bytes:內建索引項目的儲存空間,以位元組為單位。
builtin_index_count:內建索引項目的數量。
各種類中屬於某一類型的屬性 __Stat_PropertyType_Kind__
Python 類別:KindPropertyTypeStat
命名空間專用項目:
__Stat_Ns_PropertyType_Kind__
Python 類別:NamespaceKindPropertyTypeStat
特定種類實體之值類型的屬性;每一個統計資料分別代表一個屬性類型和種類的組合。其他屬性:

property_type:值類型的名稱 (字串)
kind_name:代表種類的名稱 (字串)
entity_bytes:實體資料表的儲存空間,以位元組為單位。
builtin_index_bytes:內建索引項目的儲存空間,以位元組為單位。
builtin_index_count:內建索引項目的數量。
具有名稱的屬性 __Stat_PropertyName_Kind__
Python 類別:KindPropertyNameStat
命名空間專用項目:
__Stat_Ns_PropertyName_Kind__
Python 類別:NamespaceKindPropertyNameStat
特定種類的實體中,有特定名稱的屬性;每個統計資料分別代表一個不重複的屬性名稱和種類組合。其他屬性:

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 中的一個屬性名稱、值類型和種類組合。其他屬性:

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"
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 2 適用的 App Engine 標準環境