Firestore (Datastore 模式) 會留存與應用程式預存資料相關的統計資料,例如有多少實體符合特定種類,或者特定類型的屬性值使用多少空間。
您可以在 Google Cloud 控制台中,透過下列其中一種方式查看這些統計資料:
- 在「資訊主頁」頁面。
- 在「Entities」(實體) 頁面中,以
SELECT * FROM __Stat_Kind__
形式執行 GQL 查詢。 - 使用 Datastore API 查詢名稱特殊的實體,以程式輔助方式在應用程式內部存取這些值。如要進一步瞭解 Datastore API,請參閱「API 與參考資料」。
Datastore 會使用開頭和結尾為兩條底線的種類名稱,識別提供資料統計資訊的特殊實體。這些稱為統計資料實體。舉例來說,每個應用程式都有一個 __Stat_Total__
種類的實體,代表 Datastore 模式資料庫中所有實體的統計資料。
統計資料實體會追蹤資料相關資訊,並提供資料用量的洞察資料。系統會自動建立這些項目。每個統計資料實體都具有下列屬性:
count
:統計資料考慮的項目數 (長整數)bytes
:此統計資料的項目總大小 (長整數)timestamp
:最近一次更新統計資料的時間 (日期時間值)
每個實體都屬於特定種類。統計資料類型:指出收集或使用的統計資料類別。使用種類來識別統計資料的用途,例如最佳化查詢、提升效能或資料分析。
有些統計資料種類也有其他屬性,詳情請參閱本文的「統計資料清單」一節。
統計資料系統建立新的統計資料實體時,不會立即刪除舊的統計資料實體。如要統一查看一致的統計資料,最佳方式就是使用最新的 timestamp
查詢統計資料實體,然後在擷取其他統計資料實體時,使用該時間戳記值為做為篩選條件。
統計資料系統也會建立各個命名空間專屬的統計資料。命名空間專屬統計資料的種類名稱開頭為 __Stat_Ns__
,後方則與適用於整個應用程式的統計資料種類名稱相同。
如果應用程式不使用命名空間,統計資料系統就不會建立命名空間專屬的統計資料。您只能在相關命名空間中找到命名空間專屬的統計資料。
統計資料清單
可用的統計資料如下:
統計資料 | 統計資料實體種類 | 說明 |
---|---|---|
所有實體 | __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__ |
複合式索引表中的項目;儲存的每種實體各有一個統計資料實體。其他屬性: • alphanumeric_id :索引的英數識別碼。與 gcloud 和 API 中使用的 ID 相同。• index_id :索引 ID 的內部整數表示法。如要使用 gcloud 和 API 方法,請改用 alphanumeric_id 。• kind_name :代表種類的名稱 (字串)• last_known_usage_timestamp :這個索引上次提供查詢服務的時間。一律會是 stat_tracked_since_time 和時間戳記之間的時間。如果該時間範圍內未記錄任何用量,請設為 null 。__Stat_Ns_Kind_CompositeIndex__ 不存在。• stat_tracked_since_time :已知索引用量的時間範圍開頭。不適用於「__Stat_Ns_Kind_CompositeIndex__ 」。 |
內建索引的所有項目 | __Stat_Kind_BuiltinIndex__ |
資料庫中內建索引的相關資訊。每個內建索引各有一個統計資料實體。其他屬性: • property_name :已建立索引的屬性名稱。• kind_name :代表種類的名稱 (字串)。• api_scope :Firestore 或 Datastore 。• query_scope :索引查詢範圍。如果是 Datastore 資料庫,請一律設為 COLLECTION_GROUP (種類)。• value_mode :查詢範圍的模式,例如 ASC 或 DESC 。• last_known_usage_timestamp :這個索引上次提供查詢服務的時間。一律會是 stat_tracked_since_time 和時間戳記之間的時間。如果該時間範圍內未記錄任何使用情況,請設為 null 。• stat_tracked_since_time :索引用量已知的時間範圍開頭。 |
某個種類的實體 | __Stat_Kind__ 命名空間專用項目: __Stat_Ns_Kind__ |
某個種類的實體;儲存的每種實體各有一個統計資料實體。其他屬性: • kind_name :代表種類的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。• builtin_index_bytes :內建索引項目的儲存空間,以位元組為單位。• builtin_index_count :內建索引項目的數量。• composite_index_bytes :複合式索引項目的儲存空間,以位元組為單位。• composite_index_count :複合式索引項目的數量。 |
某個種類的根實體 | __Stat_Kind_IsRootEntity__ 命名空間專用項目: __Stat_Ns_Kind_IsRootEntity__ |
某個種類的實體,該實體為實體群組根實體 (沒有祖系父項);儲存的每種實體各有一個統計資料實體。其他屬性: • kind_name :代表種類的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。 |
某個種類的非根實體 | __Stat_Kind_NotRootEntity__ 命名空間專用項目: __Stat_Ns_Kind_NotRootEntity__ |
某個種類的實體,該實體不是實體群組根實體 (有祖系父項);儲存的每種實體各有一個統計資料實體。其他屬性: • kind_name :代表種類的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。 |
某個類型的屬性 | __Stat_PropertyType__ 命名空間專用項目: __Stat_Ns_PropertyType__ |
所有實體的值類型屬性;每個值類型各有一個統計資料實體。其他屬性: • property_type :值類型的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。• builtin_index_bytes :內建索引項目的儲存空間,以位元組為單位。• builtin_index_count :內建索引項目的數量。 |
各種類中某個類型的屬性 | __Stat_PropertyType_Kind__ 命名空間專用項目: __Stat_Ns_PropertyType_Kind__ |
特定種類實體之值類型的屬性;每個屬性類型和種類的組合各有一個統計資料實體。 其他屬性: • property_type :值類型的名稱 (字串)• kind_name :代表種類的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。• builtin_index_bytes :內建索引項目的儲存空間,以位元組為單位。• builtin_index_count :內建索引項目的計數。詳情請參閱本文的「統計資料限制」一節。 |
具有名稱的屬性 | __Stat_PropertyName_Kind__ 命名空間專用項目: __Stat_Ns_PropertyName_Kind__ |
在指定種類的實體中具有特定名稱的屬性;每個不重複的屬性名稱和種類組合各有一個統計資料實體。其他屬性: • property_name :屬性的名稱 (字串)• kind_name :代表種類的名稱 (字串)• entity_bytes :實體資料表的儲存空間,以位元組為單位。• builtin_index_bytes :內建索引項目的儲存空間,以位元組為單位。• builtin_index_count :內建索引項目的數量。 |
某個類型且具有名稱的屬性 | __Stat_PropertyType_PropertyName_Kind__ 命名空間專用項目: __Stat_Ns_PropertyType_PropertyName_Kind__ |
指定種類實體中具有特定名稱且屬於特定值類型的屬性;資料庫中的每個屬性名稱、值類型和種類組合各有一個統計資料實體。 其他屬性: • 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"
統計資料限制
統計資料有下列限制:
__Stat_PropertyType_Kind__
屬性和__Stat_PropertyType_PropertyName_Kind__
屬性會傳回 array 值類型的屬性類型中繼資料,並分別記錄陣列中每個值的屬性類型。舉例來說,如果陣列屬性儲存字串清單,屬性會將屬性類型記錄為STRING
,但實際屬性類型為ARRAY<STRING>
。__Stat_Namespace__
實體包含可在__Stat_Ns_Total__
記錄中找到的相同資訊。__Stat_Namespace__
實體儲存在空的命名空間中,且包含subject_namespace
欄位,該欄位會說明實體所屬的命名空間。__Stat_Ns_Total__
記錄儲存在這些記錄所參照的命名空間中,所以不含subject_namespace
欄位。因此,若您查詢__Stat_Namespace__
種類 (來源是空字串命名空間),並要求依bytes
遞減排序,則結果會先列出佔用最大儲存空間的命名空間。由於無法查詢所有命名空間,因此,無論針對__Stat_Ns_Total__
實體進行任何查詢,最多只會出現一筆記錄。
統計資料實體捨棄順序
如果應用程式有數千個命名空間、種類或屬性名稱,則需要大量的統計資料實體。為減少儲存及更新統計資料的負擔,Datastore 模式的 Firestore 資料庫會按照稍後列出的順序,逐步捨棄統計資料實體。
絕對不會捨棄匯總統計資料實體 __Stat_Kind_CompositeIndex__
、__Stat_PropertyType__
和 __Stat_Total__
。
統計資料實體會依下列預設順序分組:
以命名空間、種類和屬性為主的統計資料:
__Stat_Ns_PropertyName_Kind__
__Stat_Ns_PropertyType_PropertyName_Kind__
以種類和屬性為主的統計資料
__Stat_PropertyName_Kind__
__Stat_PropertyType_PropertyName_Kind__
以命名空間為主的統計資料
__Stat_Namespace__
__Stat_Ns_Kind_CompositeIndex__
__Stat_Ns_PropertyType__
__Stat_Ns_Total__
類型統計資料實體的捨棄順序如下:
以命名空間和種類為主的統計資料
__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__