我想在發電機數據庫中存儲交易歷史。有兩種建議的方法。發電機數據庫中的交易歷史數據建模
方法1:交易價 - >分區鍵& GSI [CardNumber,TransactionDate]
方法2: CardNumber - >分區鍵,交易價 - >範圍鍵& LSI [CardNumber,TransactionDate]
我決定去第一個,因爲我想避免熱分區。
任何人都可以建議更好的方法或指向正確的方向。
我想在發電機數據庫中存儲交易歷史。有兩種建議的方法。發電機數據庫中的交易歷史數據建模
方法1:交易價 - >分區鍵& GSI [CardNumber,TransactionDate]
方法2: CardNumber - >分區鍵,交易價 - >範圍鍵& LSI [CardNumber,TransactionDate]
我決定去第一個,因爲我想避免熱分區。
任何人都可以建議更好的方法或指向正確的方向。
我建議去方法2稍作修改。
timestamp
而不僅僅是日期)任何理由的情況下使用,以獲得數據: -
數據模型應該滿足主要用例或查詢訪問模式。在您的方法1中,您最終會將GSI用於主要用例,這不是設計數據模型的最佳實踐。我們可以將GSI用於任何替代或邊緣情況。
正常情況下,應立即同步GSI。但是,在一些罕見的情況下,可能會有一些小的延遲。此外,您應該考慮是否要使用最終一致或一致的讀取。
如果你可以避免GSI,你也可以節省成本。
交易日期不能排序,因爲它可能同時獲得多筆交易。當有人發送信用證退款並且您正在同時進行交易時],但是創建分區密鑰時,卡號不會受到「熱分區」的影響? http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html – cody123
在方法2中,爲什麼要定義LSI?按交易日期您是否有任何分揀要求?還請提及您將如何訪問大多數用例的數據?即通過交易參考或卡號? – notionquest
數據將通過卡號和日期範圍進行訪問。 – cody123