9

當前正在處理的應用程序需要我在20到30分鐘的時間內多次增加屬於DynamoDB中某個項目的屬性。我一直在做一些關於DynamoDB的額外閱讀conditional writes and atomic countersAmazon DynamoDB條件寫入和原子計數器

發電機中的原子計數器似乎是我需要的合乎邏輯的選擇,但我確實擔心數據的一致性,尤其是跨分佈式數據庫(如發電機)和我的準確性問題數據。我期待API在高峯時段受到重創,但我想避免與條件更新相關的性能問題。我想我想知道原子計數器與DynamoDB的可靠性以及如何使用發電機正確實施它們。其他建議也是受歡迎的。

回答

9

是的,這些是您想要使用的功能。方式是通過Dynamo API使用它們。

現在,在這兩個功能之間,如果需要修改的計數器對業務非常重要(您告訴API將值更新爲x + 10「IF且僅IF」現有值爲X)

你所指的同一文件解釋原子計數器:

「你可以,如果你懷疑先前請求 不成功重試此操作。然而,你將有可能採用相同的更新 兩次。 。這可能是可以接受的網站計數器,因爲你 c對參觀者略微超過或低估的容忍度。 然而,在銀行應用程序,這將是更安全的使用 有條件更新。」

所以,如果它是關鍵業務操作中使用的條件寫入,否則原子計數器。希望它澄清。

+0

我也考慮使用某種緩存,將值寫入緩存,然後每兩分鐘刷新一次緩存 – john

+0

只有當計數器不是關鍵業務時緩存才能正常工作,因爲緩存可能會關閉,可能不會非常可靠等。這種方式緩存有助於減少延遲並節省發電機吞吐量。 –