DynamoDb如何处理大交易

时间:2020-03-23 22:54:48

标签: transactions nosql amazon-dynamodb

在我的用例中,我有一个用户上传了具有60k行的csv文件,每行最好是DynamoDb中的一个条目。

用户可以随时上传文件。当他上载新文件时,必须删除并替换旧数据。在SQL数据库中,您将:

  • 打开交易
  • removeAllFromDb()
  • 保存()数据库中的每个条目
  • 关闭/回滚交易

我存储的数据确实适合对象存储,没有任何关系。加上成本效益,DynamoDb带来了Aurora。

由于DynamoDb的批处理操作每个请求只能处理25个对象,因此如果由于某种原因无法完全处理新文件,则保留旧数据很重要。

是否有使用DynamoDb实现此目的的干净方法?

1 个答案:

答案 0 :(得分:0)

好像您应该看看DDB中的版本控制。

Using Sort Keys for Version Control

  • 对于每个新项目,创建该项目的两个副本:一个副本的开头应具有版本号前缀零(例如v0_)
    的排序键,并且版本号前缀应为一个
    (例如v001 _)。

  • 每次更新项目时,请在更新版本的排序键中使用下一个更高版本的前缀,然后复制更新后的 内容放入版本前缀为零的项目中。这意味着 使用零可以轻松找到任何项目的最新版本 前缀

编辑
在这种情况下,您实际上不会删除行... 但是,是的,在更新的中间,用户可以同时获取旧数据和新数据。那就是最终一致的想法。

如果您不能忍受,为什么还要使用DDB?

似乎最好将文档存储在S3中并使用Athena对其进行查询。

相关问题