具有 json 属性或记录中每个属性的 DynamoDB 表

问题描述 投票:0回答:1

我需要在 DynamoDB 中临时存储一些更改跟踪数据。

最初我认为具有以下属性:

属性:

  • recordId(字符串):实体的标识符。

  • lastTimestamp(数字):最后一次更改的时间戳。

  • changes(字符串):包含更改详细信息的 JSON 字符串。

    { 变化: [ { 时间戳:'2024-04-01 16:14:23',用户:11111,属性:'库存',原始:'0',当前:'1.5'}, { 时间戳:'2024-04-01 16:14:23',用户:11111,属性:'assetId',原始:'123455',当前:'223344'}, { 时间戳:'2024-04-01 17:20:01',用户:2222,属性:'成本',原始:'1.5',当前:'1.0'}, ] }

我不是在表中创建新对象,而是通过 recordId 获取项目并附加到 json 属性“更改”新项目。

上面的问题是,如果我想按每个更改的时间戳进行过滤,我认为性能不是那么好,因为该时间戳存在于每个更改数组项中。

所以现在我正在考虑拥有这些属性:

属性:

  • recordId(字符串):实体的标识符。
  • timestamp(数字):更改的时间戳。
  • property(字符串):已更改的属性的名称。
  • original(字符串):属性的原始值。
  • current(字符串):属性的当前值。

在上面,我必须为每次更改创建一个新的 DynamoDB 记录。

值得一提的是,TTL 将设置为大约 3 个月后到期。

您认为哪种场景更好?

第一种方法确实会减少写入,但缺点是在属性级别按时间戳进行过滤将是一个问题。

第二个执行大量写入操作,但按时间戳查询的性能会更高。

amazon-dynamodb
1个回答
0
投票

第二种方法效率更高。

第一种方法不会执行更多写入操作,而是执行相同数量的写入操作。

第二种方法可确保您不会达到 400KB 的最大项目大小,同时还允许您更有效地读回数据。

© www.soinside.com 2019 - 2024. All rights reserved.