簡體   English   中英

Datastore 模式下的 Firestore 似乎沒有強一致性

[英]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.

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