userId123:20220401 userId123:20220402 1 userId123:20220403 <1>
假设每次用户更改时,我都要存储用户设置的快照。这些快照将允许用户查看他们对设置所做更改的历史记录。
每次更改都写入一个新行(方法a)还是每次更改都写到同一行(方法B)更好?我是否遗漏了任何一种方法的优点/缺点?
以下示例显示用户(userId123)进行以下更改:
- 打开通知
- 关闭通知
- 打开通知
方法A:
密钥将是userId+时间戳,因此它每次都会写入一个新行
查询将按行前缀(userId)进行扫描,并获得多行以显示历史
{ notifications: true }
{ notifications: false }
{ notifications: true }
这种场景更适合将更改与版本一起存储在一行中。您甚至可以设置垃圾收集规则来删除您提到的超过一年的任何更改。
有助于进一步优化此方法的一件事是,如果您在某些情况下只需要最新的数据或最新的5项更改,您可以执行一个查询,该查询将过滤为只提供5个版本,并且网络成本安全。