![](/img/trans.png)
[英]Are global non-transaction queries strongly consistent on Cloud Firestore in Datastore Mode?
[英]Firestore in Datastore mode does not seem to be strongly consistent
我在 Datastore 模式下使用帶有 objectify 和 Firestore 的雲端點。 盡管它在文檔中說所有查詢都是強一致的,但我發現它們不在以下示例中:
示例 1
我創建了一個端點,通過屬性查詢實體,將 +1 添加到其上的count
屬性,並將其保存回數據存儲區。 然后我有 50 個不同的客戶端同時執行該方法。 我希望count
屬性為 50,但是,它通常最終在 25-30 之間。
示例 2
我有一個通過屬性查詢實體的端點。 如果實體不存在,我將創建實體並將其保存到數據存儲區。 如果它存在,我只是返回它。 同樣,我同時使用 50 個不同的客戶端訪問了這個端點。 我希望數據存儲區中只有一個實體。 但是,我可能會有 5-10 個相同的實體。
在我看來,這並不一致。 如果我在上述端點中獲取我的代碼並將它們放入一個重試事務中,那么一切都會按預期工作。 我在 objectify 中環顧四周,看看是否在某處設置了ReadOptions ,但據我所知,沒有,所以它應該使用默認的read_consistency=STRONG
例如 1,您需要使用事務來確保寫入不會相互影響。
例如 2,您需要再次使用事務來獲得跨客戶端的一致性。
強一致性意味着如果客戶端寫入一個值,它可以在寫入成功后讀取或查詢回來。 並不是說如果一個客戶端讀取一個值,另一個讀取相同的值,他們每個人都會進行轉換,並嘗試寫入每個客戶端的盲寫將合並在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.