可以将属性作为一个索引的分区键,而作为另一个索引的排序键?
例如,我有一个名为 Events
的表,带有属性user
,status
,created_at
。
我可以创建以下GSIS
gsi user_status
[ user
as partition
, status
as sort
]
GSI status_created_at
[status
as partition
,created_at
AS sort
]
这几乎是GSI的想法。简而言之:答案是肯定的。
不过要谨慎地创建GSIS,其中您在一小部分分区键上具有大量的心脏性,例如第二个GSI示例,您可以分区状态。大概总共只有几个状态值,但是对于每个状态,基数(具有相同状态的项目数(可能非常大。这可能是一个问题的原因是,GSI(如表(可能会受到适用于每个分区的读写能力限制。随着桌子的尺度,具有很高的基数的分配分区较低可能导致性能差。