决定在GCP Bigtable中使用列版本还是新行



假设每次用户更改时,我都要存储用户设置的快照。这些快照将允许用户查看他们对设置所做更改的历史记录。

每次更改都写入一个新行(方法a)还是每次更改都写到同一行(方法B)更好?我是否遗漏了任何一种方法的优点/缺点?

以下示例显示用户(userId123)进行以下更改:

  1. 打开通知
  2. 关闭通知
  3. 打开通知

方法A:

密钥将是userId+时间戳,因此它每次都会写入一个新行
查询将按行前缀(userId)进行扫描,并获得多行以显示历史

列数据userId123:20220401{ notifications: true }userId123:20220402{ notifications: false }1userId123:20220403{ notifications: true }<1>

这种场景更适合将更改与版本一起存储在一行中。您甚至可以设置垃圾收集规则来删除您提到的超过一年的任何更改。

有助于进一步优化此方法的一件事是,如果您在某些情况下只需要最新的数据或最新的5项更改,您可以执行一个查询,该查询将过滤为只提供5个版本,并且网络成本安全。

相关内容

  • 没有找到相关文章

最新更新