Datastore 查詢中的資料一致性
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
資料一致性等級
Datastore 查詢能夠提供的結果分為兩種一致性等級:
- 「同步一致性」查詢可保證獲得最新的結果,但可能需要較長的時間才能完成。
- 最終一致性查詢的執行速度通常較快,但偶爾可能會傳回過時的結果。
在最終一致性查詢中,用於收集結果的索引也是透過最終一致性的方式來存取。因此,這類查詢有時候會傳回不再符合原始查詢條件的實體,而具有同步一致性的查詢則一律具有交易一致性。
Datastore 查詢資料一致性
根據查詢的性質,查詢會傳回一致性保證等級不同的結果:
- 根據預設,祖系查詢 (在實體群組內) 會維持同步一致性,但可以藉由設定 Datastore 讀取政策 (請見下文) 改為維持最終一致性。
- 非祖系查詢始終會維持最終一致性。
按金鑰擷取實體 (也稱為「按金鑰查詢」) 會維持同步一致性。
設定 Datastore 讀取政策
為改善效能,您可以設定 Datastore 讀取政策,讓所有讀取和查詢都具有最終一致性。(您也可以透過 API 明確設定同步一致性政策,但是這樣的設定並無實質效果,因為無論政策為何,非祖系查詢一律會採取最終一致性。)
您也可以設定 Datastore 的「呼叫期限」
,即為應用程式等待 Datastore 傳回結果的時間上限 (以秒為單位),超過此期限就會因為錯誤而取消。預設值為 60 秒,目前無法設為高於此上限,但可往下調整以確保特定作業快速失敗 (例如更快速傳回回應給使用者)。
如要在 Python 中設定資料儲存庫讀取政策和呼叫期限,請將這些項目做為引數傳遞至
Query
或
GqlQuery
類別的
run()
、
get()
、
fetch()
和
count()
方法。例如:
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-05-30 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-05-30 (世界標準時間)。"],[[["Datastore queries operate at two consistency levels: strongly consistent, which guarantees the freshest data but may take longer, and eventually consistent, which is generally faster but might return stale data."],["Ancestor queries, which occur within an entity group, are strongly consistent by default but can be made eventually consistent by adjusting the Datastore read policy, whereas non-ancestor queries are always eventually consistent."],["Fetching an entity by key, also known as \"lookup by key\", provides strong consistency in retrieving data."],["The Datastore read policy can be set to ensure all reads and queries are eventually consistent, optimizing performance, and while a strong consistency policy can be set, it has no effect on non-ancestor queries, as they remain eventually consistent."],["The Datastore call deadline, the maximum time an application waits for a result, defaults to 60 seconds but can be reduced to ensure faster operation failures, thus allowing the possibility of faster user responses."]]],[]]