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

标签 amazon-dynamodb nosql

来自关系背景,我习惯于能够写这样的东西:

UPDATE Table Set X = 1 Where Y = 2

然而,这样的操作在像 Dynamodb 这样的数据库中似乎很难完成。假设我已经对 Y = 2 的项目进行了查询。

在我看来,提供的 API 有两个选项:
  • 做很多很多的个人update请求,或
  • 做一个 batch write并将所有数据写回,并应用更新。

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

    我在这里遗漏了一些明显的东西吗?或者,非关系数据库是否不是为了处理这种规模的“更新”而设计的——如果是这样,我能否在不增加性能成本的情况下实现类似的目标?

    最佳答案

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

    BatchWrite 更像是 DynamoDB API 提供的一种便利,可帮助您节省网络流量,将 25 个请求的开销减少到一个请求的开销,但除此之外并没有节省多少。

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

    当然,最好的方案是如果您可以构建您的解决方案,这样您就不需要对 DynamoDB 表执行大量更新。写入很昂贵,如果您发现自己经常需要更新表的大部分内容,那么可能有一种替代设计可以使用。

    关于amazon-dynamodb - DynamoDb - 如何进行批量更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41561230/

    相关文章:

    java - 绝地武士 : Could not get a resource from the pool

    elasticsearch - ElasticSearch-日期范围条件应与日期范围数组中的一项完全匹配

    database-design - 查询 Cassandra 列族中 X 天内未更新的行

    amazon-web-services - DynamoDB 在分区键选择错误的 GSI 上读取是否会影响表的读/写

    node.js - 无需扫描即可获取表中的所有项目

    amazon-web-services - 如何将现有资源链接到 cloudformation 堆栈?

    Go DynamoDB Expression Add无法添加到列表

    sql - Redis 在多个键上的复杂排序。构建事件提要

    database - 哪个 NoSQL 数据库最适合仅追加审计日志记录用例?

    java - JanusGraph 中的遍历序列化错误