Amazon dynamodb DynamoDb-如何进行批量更新?

Amazon dynamodb DynamoDb-如何进行批量更新?,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,来自关系背景,我习惯于写一些东西,比如: UPDATE Table Set X = 1 Where Y = 2 然而,在像Dynamodb这样的db中,这样的操作似乎很难完成。假设我已经对Y=2的项目进行了查询 在我看来,提供API有两种选择: 进行大量的个人更新请求,或 执行批写入,并在应用更新的情况下将所有数据写入 就性能而言,这两种方法似乎都很糟糕 我是不是漏掉了什么明显的东西?或者,非关系型数据库的设计不是为了处理这种规模的“更新”——如果是这样的话,我能在不大幅降低性能成本的情况

来自关系背景,我习惯于写一些东西,比如:

UPDATE Table Set X = 1 Where Y = 2
然而,在像Dynamodb这样的db中,这样的操作似乎很难完成。假设我已经对Y=2的项目进行了查询

在我看来,提供API有两种选择:

  • 进行大量的个人
    更新
    请求,或
  • 执行
    批写入
    ,并在应用更新的情况下将所有数据写入
就性能而言,这两种方法似乎都很糟糕


我是不是漏掉了什么明显的东西?或者,非关系型数据库的设计不是为了处理这种规模的“更新”——如果是这样的话,我能在不大幅降低性能成本的情况下实现类似的功能吗?

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

BatchWrite是DynamoDB API提供的一种更方便的方法,它可以帮助您节省网络流量,将25个请求的开销减少到一个请求的开销,但除此之外,它不会节省太多

BatchWrite API也比单独的更新和放置项API灵活一些,因此在某些情况下,最好自己处理并发性,只使用底层操作


当然,最好的方案是,如果您能够构建您的解决方案,这样您就不需要对DynamoDB表执行大量更新。写操作非常昂贵,如果您发现自己经常需要更新表的很大一部分,那么很可能会采用另一种设计

如果出现诸如批量更改状态或批量上传库存之类的问题,那么什么是替代设计?@ManMohanVyas替代方案取决于您的问题空间。你到底想做什么?如前所述,尝试从csv批量上传库存。以千库存为单位的批量状态变化。在库存管理领域,这些是非常常见的problem@ManMohanVyas数千件物品对迪纳摩来说不是问题。如果这些都是CSV的,我觉得你可以让更新在几分钟内进行,使其有效地免费(更不用说有突发可用)。但是为什么您的系统使用两个数据源呢?什么更新了CSV?这不能和DynamoDB集成吗?您得到了错误的用例是-1)将清单从GUI上传到DynamoDB。2) 对dynamoDB中已经存在的库存执行一些库存属性的批量更新。注意-我只使用dynamo-但搜索库存、更新库存似乎没有效率。我觉得batchWrite不同于batchUpdate,DynamoDB不提供batchUpdate API。