簡體   English   中英

Google AppEngine數據存儲區一致性

[英]Google AppEngine DataStore constistency

我目前對Google AppEngine的High Replication數據存儲的了解如下:

  • 各個實體的 獲取 放置通常始終是高度一致的 ,即,該條目的放置完成后,以后的get都不會比完成的放置早返回版本。 或者,更准確地說,只要任何一個get返回新版本,以后的get就不會再返回舊版本。

  • 如果多個實體的 gets puts屬於同一祖先組並且在事務中執行,則它們是高度一致的,即,如果我有兩個實體都在事務中被put修改並且“同時”以不同的方式讀取使用get進行事務處理, get將返回兩個條目的舊版本或兩個條目的新版本,這取決於在getput -transaction是否已完成,但它永遠不會返回舊值一個實體的價值和另一實體的新價值。

  • 可以選擇具有祖先過濾器的查詢為高度一致或最終一致的查詢,其中高度一致的查詢需要更長的時間才能完成,但始終會返回該祖先在同一事務中更新的所有實體的“相同”版本(舊的或新的)組,永遠不要使用任何舊版本和新版本。

  • 跨始祖的查詢最終始終是一致的 ,即可能返回一個結果實體的舊版本,而返回另一個結果實體的新版本。

我說對了嗎? 這實際上記錄在任何地方嗎? 在這里 (第一個和第二個“ Note”之間)和這里 ,我只找到了一些有關查詢一致性的文檔,但是沒有討論獲取放置 ...)

是的,你是對的。 他們只是在措辭上略有不同:

https://developers.google.com/appengine/docs/java/datastore/

一開始就有5個點形特征。 最后兩個描述您的問題,除了它們引用的是“讀取”而不是“獲取”。

這可能會增加您的困惑,但是當它們表示“讀取”或“獲取”時,實際上意味着直接通過鍵或ID獲取實體。 如果您使用鍵或ID以外的屬性調用python的“ get”函數,則它實際上是在發出查詢,該查詢最終是一致的(除非它是祖先查詢)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM