資料一致性等級
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
後續步驟
- 瞭解如何指定查詢傳回的內容,以及如何進一步控制查詢結果。
- 瞭解進行 Datastore 查詢時的常見限制。
- 瞭解查詢游標,應用程式可運用這項功能分批擷取查詢結果,十分方便。
- 瞭解 Datastore 查詢的基本語法與結構。