【问题标题】:ItemSize in DynamoDB Global IndexDynamoDB 全局索引中的 ItemSize
【发布时间】:2015-09-04 00:44:05
【问题描述】:

已经有一个关于如何计算the size of items in dynamodb 表的问题。但是,根据我迄今为止阅读的文档,我不清楚如何计算全局索引查询返回的项目的项目大小。

是表中item所有属性的大小还是投影到索引中的item所有属性的大小?

到目前为止,我找到了以下材料:

对于查询和扫描操作,DynamoDB 根据项目大小而不是返回到应用程序的数据量来计算消耗的预置吞吐量量。因此,无论您使用 ProjectionExpression 参数请求所有属性(默认行为)还是仅请求其中一些属性,消耗的容量单位的数量都是相同的。 -- AWS Reference

对于 Query,所有返回的项目都被视为单个读取操作。因此,DynamoDB 计算所有项目的总大小,然后向上舍入到下一个 4 KB 边界。 -- AWS Reference

二级索引中的数据由从表中投影或复制到索引中的属性组成。创建二级索引时,您需要为索引定义备用键,以及要在索引中投影的任何其他属性。 DynamoDB 将这些属性与表中的主键属性一起复制到索引中。然后,您可以像查询或扫描表一样查询或扫描索引。 -- AWS Reference

有人知道答案吗?

【问题讨论】:

    标签: indexing amazon-dynamodb


    【解决方案1】:

    它基于索引条目的大小

    来自GSI Throughput Considerations documentation(强调我的):

    对于全局二级索引查询,DynamoDB 以与针对表的查询相同的方式计算预置读取活动。 唯一的区别是计算是基于索引条目的大小,而不是表中项目的大小。读取容量单位的数量是所有投影属性大小的总和所有退回的物品;然后将结果向上舍入到下一个 4 KB 边界。有关 DynamoDB 如何计算预置吞吐量使用情况的更多信息,请参阅Specifying Read and Write Requirements for Tables

    【讨论】:

    • 太棒了。感谢您发现这一点。此外,对答案本身非常满意。到目前为止,我一直在想,当您可以将 ProjectionExpression 添加到对表的查询和过滤结果时,为什么要使用索引,特别是考虑到正确优化吞吐量成本的复杂性。现在,它更有意义了。
    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 2014-02-18
    • 2020-07-09
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多