DynamoDb - 如何进行批量更新?

时间:2017-01-10 04:38:58

标签: amazon-dynamodb nosql

来自关系背景,我曾经能够写出类似的东西:

UPDATE Table Set X = 1 Where Y = 2

然而,在像Dynamodb这样的db中,这样的操作似乎很难完成。让我们说我已经对Y = 2的项目进行了查询。

我看到它的方式,提供API有两个选项:

  • 执行大量个别update请求,或
  • 执行batch write并重新写入所有数据,并应用更新。

这两种方法在性能方面看起来都很糟糕。

我错过了一些明显的东西吗?或者非关系型数据库不是为处理“更新”而设计的。在这种规模上 - 如果是这样,我可以在没有大幅性能成本的情况下实现类似的目标吗?

1 个答案:

答案 0 :(得分:7)

不,你没有遗漏任何明显的东西。不幸的是,这些是您使用DynamoDB的唯一选项,但有一点需要注意,BatchWrite一次只能批量提交25个更新操作,因此您仍然可能需要发出多个BatchWrite请求。

BatchWrite更方便DynamoDB API提供的便利,可以帮助您节省网络流量,减少25个请求的开销,但不会节省很多费用。

BatchWrite API也比单独的Update和Put项API灵活一点,因此在某些情况下,自己处理并发性并使用底层操作会更好。

当然,最好的方案是,如果您可以构建解决方案,以便不需要对DynamoDB表执行大量更新。写入是昂贵的,如果您发现自己经常需要更新表的大部分,可能会有一个可以采用的替代设计。