DynamoDB Scan查询:同分区键的条目是否按序返回?
DynamoDB Scan操作中同分区键条目排序问题
结论:绝对不要依赖Scan操作返回的同分区键条目排序
DynamoDB的Scan操作是全表扫描机制,官方从未对其返回结果的顺序做出任何承诺——不管是全局范围,还是同一分区键内部的条目。
你在小数据集上测试得到的有序结果只是偶然情况:当数据量较小时,同分区键的条目可能恰好存储在同一个物理分片或存储单元中,返回时呈现出排序键的顺序,但这不是设计上的保障。一旦数据量增长触发分片拆分、数据迁移,或者存储引擎内部进行优化调整,同分区键的条目返回顺序完全可能被打乱。
如果需要确保同一分区键下的条目按排序键(sk)有序返回,唯一可靠的方式是使用Query操作:指定分区键条件后,Query会严格按照排序键的定义顺序(升序或降序,可通过ScanIndexForward参数控制)返回对应条目,这是官方明确保障的行为。
比如针对你给出的示例数据,执行Query操作指定pk=customer-event,就能稳定得到sk:1、sk:2、sk:3的有序结果。
内容的提问来源于stack exchange,提问作者Declan Price
相关产品推荐
相关产品推荐

