【问题标题】:AWS DynamoDB put item size limit exception for item size less than 400KBAWS DynamoDB 为小于 400KB 的项目设置项目大小限制例外
【发布时间】:2019-09-20 23:45:06
【问题描述】:

放置项 API 调用的 AWS DynamoDB 限制为 400KB。我正在放置一个 Python 字典,它的大小是使用 sys.getsizeof() 方法计算的。即使方法返回值小于 400000 字节,put item 操作也会抛出异常:

An error occurred (ValidationException) when calling the PutItem operation: Item size has exceeded the maximum allowed size'

在计算确切尺寸方面我有什么遗漏吗?

【问题讨论】:

    标签: python amazon-web-services amazon-dynamodb boto3


    【解决方案1】:

    你很可能有一个或多个local secondary indexes

    索引项使用的空间量是以下各项的总和:

    • 基表主键(分区键和排序键)的字节大小
    • 索引键属性的字节大小
    • 投影属性的字节大小(如果有)
    • 每个索引项 100 字节的开销

    还有来自The DynamoDB limits的这条注释:

    对于表上的每个本地二级索引,以下内容的总和有 400 KB 的限制:

    • 表中项目数据的大小。
    • 与该项目对应的本地二级索引条目的大小,包括其键值和投影属性。

    换句话说,您需要填充每个项目的大小,因为 PutItem 需要足够的空间来存储项目和索引数据,并且这两者的总和需要小于 400kb。

    【讨论】:

    • 发布问题后,我找到了这个解决方案:stackoverflow.com/questions/33768971/…,就像您指出的那样,为每个索引复制数据。因此,尺寸计算应考虑表中的额外 LSI。
    猜你喜欢
    • 2018-10-16
    • 2016-02-19
    • 2012-02-17
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多