我已经阅读了二级索引的指南,但我不确定快速搜索的能力何时超过了扫描属性的劣势。让我给你举个例子。
我正在为用户保存游戏进度数据。PK 是用户 ID。我需要能够:
了解有关特定游戏的用户进度。
为用户获取所有已完成/正在进行的游戏。
因此,我可以将我的 SK 设计为progress_{state}以便能够快速查询所有游戏的进度(状态表示开始/完成),或者我可以将我的 SK 设计为progress_{gameId}以便能够查询给定游戏的进度快速地。但是,我不能同时使用 SK。当我选择一个时,另一个操作将需要扫描。
因此,我正在考虑使用 LSI,这将增加整个表的开销,正如亚马逊在此处指出的那样:
每个二级索引都意味着 DynamoDB 需要做更多的工作。当您在具有本地二级索引的表中添加、删除或替换项目时,DynamoDB 将使用额外的写入容量单位来更新相关索引。
我估计最多有数千种类型的游戏,我想知道是否值得使用 LSI,或者在我选择的其他操作中使用扫描是否更好。
有没有人对此类问题有任何实际经验?我无法找到有关此主题的任何内容。