【问题标题】:How can DynamoDB's BatchWriteItem API call write more than 10MB of data, given that it can write a maximum of 25 items with 400KB/item?DynamoDB 的 BatchWriteItem API 调用如何写入超过 10MB 的数据,因为它最多可以写入 25 个 400KB/item 的项目?
【发布时间】:2020-07-02 16:07:29
【问题描述】:

根据官方文档:“对 BatchWriteItem 的一次调用最多可以写入 16 MB 的数据,其中可以包含多达 25 个放置或删除请求。要写入的单个项目可以大到 400 KB。” (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)

但是 25 个 put 请求 * 每个 put 请求 400KB = 10MB。那么16MB的限制是多少?在什么情况下总容量会超过 10MB?纯粹是出于好奇。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

    其实我也有同样的疑惑。搜索了这么多,但找到了我在这里发布的一个不错的解释(不知道它是否正确,但我希望它能给你一些直觉)。

    16MB 的限制适用于请求大小 - 即通过网络传输的原始数据。可能与实际存储和计量的吞吐量完全不同。我能够使用包含 25 个大约 224kB 的 PutItem 的 BatchWriteItem 来达到这个 16MB 的请求大小上限

    也曾前往此link。这可能会有所帮助。

    【讨论】:

    • 没错。您最多可以写入 10MB 的实际数据项,但有一些开销会使请求变得更大:具有许多微小属性的项在其 JSON 编码中具有大量开销,也许更现实的是,大 blob(“B”ytes type) 以 JSON 格式编码,采用 base64 编码,将请求大小扩大了 33%。
    • @NadavHar'El 我相信属性名称实际上是计入数据上限的,仅供参考。不过对 base64 的观察很好。
    • @JamesShapiro 您对属性名称是正确的,但 JSON 可能有其他开销 - 例如,数字 42 在 JSON 中表示为 {"N": "42"},11 个字节,大概是 ( ?) 大于 DynamoDB 对该数字的内部编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2020-03-13
    • 2020-02-19
    • 2018-10-16
    • 2016-12-07
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多