Firestore (Datastore 模式) 可讓您存取中繼資料,當中包括下列相關資訊:實體群組、命名空間、實體種類、屬性,以及每個屬性的屬性表示法。中繼資料的用途包括像是為您的應用程式或後端管理函式建立自訂資料儲存庫檢視器。
Google Cloud 主控台的 Datastore 資訊主頁也提供應用程式的部分中繼資料,但該處顯示的資料與這些函式傳回的資料在某些重要層面有所不同。
- 更新間隔。使用 API 讀取中繼資料會傳回最新資料,資訊主頁中的資料每天只更新一次。
- 內容。資訊主頁中的部分中繼資料無法透過 API 取得;反之亦然。
- 速度。中繼資料取得和查詢作業的計費方式與資料庫取得和查詢作業的計費方式相同。擷取命名空間、種類及屬性相關資訊的中繼資料查詢作業,執行速度通常較慢。根據經驗法則,單次中繼資料查詢傳回 N 個實體所需的時間,大約相當於 N 次一般查詢每次傳回單一實體的加總時間。再者,屬性表示法查詢 (非僅限索引鍵屬性查詢) 的速度比僅限索引鍵屬性查詢慢。中繼資料取得實體群組中繼資料的速度略快於取得一般實體的速度。
中繼資料查詢
中繼資料查詢可使用三種預留的特殊實體種類:
實體 | 說明 |
---|---|
__namespace__ |
用於尋找應用程式實體中使用的所有命名空間。 |
__kind__ |
用於查詢特定種類。 |
__property__ |
用於查詢特定屬性類型的中繼資料。 |
這些種類不會與應用程式中可能已經存在的其他同名種類發生衝突。查詢這些特殊種類即可擷取包含所需中繼資料的實體。
中繼資料查詢傳回的實體會根據您資料庫的目前狀態動態產生。雖然您可以建立種類為 __namespace__
、__kind__
或 __property__
的本機實體物件,但無法在資料庫中儲存這些物件。
命名空間查詢
您可以使用「命名空間查詢」尋找應用程式實體中使用的所有命名空間。您可以透過這種方式執行活動,例如跨多個命名空間的管理功能。
命名空間查詢會傳回特殊種類 __namespace__
的實體,其索引鍵名稱就是命名空間的名稱。(由空字串 ""
指定的預設命名空間則為例外:空字串並非有效的索引鍵名稱,因此這個命名空間會改以數字 ID 1
當做索引鍵)。這類型的查詢僅支援對特殊虛擬屬性 __key__
的範圍進行篩選,其屬性值為實體索引鍵。可按照 __key__
的值遞增排序結果 (不可遞減排序)。__namespace__
的實體沒有屬性,因此僅限索引鍵和並非僅限索引鍵的查詢,都會傳回相同資訊。
以下範例會傳回應用程式命名空間的清單,範圍在變數 startNamespace
和 endNamespace
的指派值之間:
C#
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore C# API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Go API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Java API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Node.js API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore PHP API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Python API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Ruby API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
種類查詢
「種類查詢」會傳回種類 __kind__
的實體,其索引鍵名稱為實體種類名稱。這種類型的查詢間接受限於目前的命名空間,且僅支援限定 __key__
虛擬屬性範圍的篩選作業。可按照 __key__
的值遞增排序結果 (不可遞減排序)。__kind__
的實體沒有屬性,因此僅限索引鍵和並非僅限索引鍵的查詢,都會傳回相同資訊。
以下範例會顯示應用程式所用種類的清單:
C#
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore C# API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Go API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Java API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Node.js API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore PHP API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Python API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Ruby API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
GQL
SELECT __key__ FROM __kind__
屬性查詢
「屬性查詢」會傳回種類 __property__
的實體,表示與某種實體種類相關且已建立索引的屬性。(不含未建立索引的屬性)。代表「k」種類的「p」屬性的實體建構方式如下:
- 實體的索引鍵具有種類
__property__
及索引鍵名稱「p」。 - 實體的父項索引鍵具有種類
__kind__
及索引鍵名稱「k」。 - 實體的
property_representation
陣列屬性包含該屬性的所有表示法。
例如,假設您的資料庫只包含兩個同時具有 name
和 done
屬性的 Task
實體:
Key: 'Task:1'
name: 'Read some properties'
done: true
Key: 'Task:2'
name: 'Climb'
done: null
則 __property__
查詢會傳回以下兩個實體:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
屬性查詢間接受限於目前的命名空間,而且支援使用祖系或針對某個範圍的 __key__
虛擬屬性進行限定篩選。
「僅限索引鍵」屬性查詢比非僅限索引鍵查詢更有效率,因為前者不需要收集屬性的表示法。以下範例會擷取應用程式所有實體種類的名稱,以及與各實體種類相關聯的屬性:
C#
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore C# API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Go API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Java API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Node.js API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore PHP API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Python API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Ruby API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
GQL
SELECT __key__ FROM __property__
屬性查詢:屬性表示法
非僅限索引鍵屬性查詢,亦稱為「屬性表示法查詢」,會傳回各屬性值類型的其他資訊。代表種類「k」及其屬性「p」的實體屬性 property_representation
是個陣列,此陣列內含任何屬於種類「k」的實體及其「p」值的所有「表示法」。
每個值各自使用以下「表示法」(請注意,有些值類型使用相同的表示法):
值類型 | 表示法 |
---|---|
整數 | INT64 |
浮點數 | DOUBLE |
布林值 | BOOLEAN |
文字字串 | STRING |
位元組字串 | STRING |
日期和時間 | INT64 |
Datastore 金鑰 | REFERENCE |
嵌入實體 | STRING |
陣列 | 陣列元素的表示法 |
地理點 | POINT |
空值 | NULL |
以下範例會使用祖系屬性查詢,尋找 Task
種類屬性的所有表示法:
C#
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore C# API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Go API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Java API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Node.js API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore PHP API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Python API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Ruby API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
GQL
SELECT * FROM __property__ WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Task')
屬性查詢:篩選
屬性查詢支援以 __kind__
或 __property__
索引鍵進行祖系篩選,會將查詢結果限制為單一種類或屬性,如前述的屬性表示查詢所示。
屬性查詢也可以對虛擬屬性 __key__
的範圍進行篩選,其中索引鍵表示 __kind__
或 __property__
實體。可按照 __key__
的值遞增排序結果 (不可遞減排序)。篩選功能適用於種類-屬性對組,先按種類排序,再按屬性排序。例如,假設您的實體包含以下屬性:
- 種類
Task
及其下列屬性created
priority
tags
- 種類
TaskList
及其下列屬性created
以下僅限索引鍵的屬性查詢:
C#
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore C# API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Go API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
不適用Java
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Java API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Node.js API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
不適用PHP
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore PHP API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Python API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
不適用Ruby
如要瞭解如何安裝及使用 Cloud Datastore 的用戶端程式庫,請參閱「Cloud Datastore 用戶端程式庫」一文。詳情請參閱 Cloud Datastore Ruby API 參考說明文件。
如要向 Cloud Datastore 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
會收集以下種類、屬性名稱對組:
Task, priority
Task, tags
TaskList, created
請注意,結果會包含來自種類 Task
和 TaskList
的屬性,但不包含種類 Task
的屬性 created
,因為該屬性不在查詢指定的範圍內。