【发布时间】:2015-12-29 08:12:19
【问题描述】:
我想为 dynamodb 表创建一个全局索引。表中的大多数记录具有全局索引的 hashKey 的“未定义”值。 dynamodb 如何使用“未定义”的 hashKey 对这些记录进行分区?我只使用未定义的 hashKey 值查询全局索引。我想知道这些“未定义”的 hashKey 记录是否会损害查询性能。
【问题讨论】:
标签: amazon-dynamodb
我想为 dynamodb 表创建一个全局索引。表中的大多数记录具有全局索引的 hashKey 的“未定义”值。 dynamodb 如何使用“未定义”的 hashKey 对这些记录进行分区?我只使用未定义的 hashKey 值查询全局索引。我想知道这些“未定义”的 hashKey 记录是否会损害查询性能。
【问题讨论】:
标签: amazon-dynamodb
如果未定义的意思是它们的实际字符串值为“未定义”,它们将在索引中,这可能会通过潜在地创建热分片而损害性能。
但是,如果未定义是指这些属性没有任何关联的值,那么这将最终创建所谓的稀疏索引。拥有稀疏索引意味着这些项目根本不会在 GSI 中,这将有利于性能,因为写入缺少这些属性的对象不需要写入 GSI。
稀疏索引是 DynamoDB 的一项强大功能,因为它提供了另一种访问项目的方式。例如,拥有稀疏索引意味着它可以拥有更少的记录,这使得 GSI 扫描在某些用例中很实用。
【讨论】: