发电机数据库中的交易历史数据建模

时间:2017-07-27 09:41:10

标签: amazon-dynamodb data-modeling

我想在Dynamo数据库中存储事务历史记录。给出了2种建议的方法。

方法1:交易参考 - >分区键& GSI [CardNumber,TransactionDate]

方法2: CardNumber - >分区键,交易参考 - >范围键& LSI [CardNumber,TransactionDate]

我决定使用第一个,因为我想避免热分区。

任何人都可以建议一个更好的方法或指向正确的方向。

1 个答案:

答案 0 :(得分:0)

我建议采用方法2稍加修改

  • CardNumber - >分区键
  • TransactionDate - >排序键(我猜你可以存储交易 timestamp而非日期)
  • 交易参考 - >如果需要,创建GSI(即,如果您有任何用例仅基于参考获取数据)

<强>原因: -

数据模型应满足主要用例或查询访问模式。在您的方法1中,您最终将GSI用于主要用例,这不是设计数据模型的最佳实践。我们可以将GSI用于任何替代或边缘情况。

通常,应立即同步GSI。但是,在一些罕见的情况下,可能会有一些小的延迟。此外,您应该考虑是否要使用最终一致或一致的读取。

如果您可以避免使用GSI,也可以节省成本。