3

我打算有一个作为哈希键和属性(等等)的User表。UserNameLastLoginDate

我希望能够查询表中的内容,例如:上个月未登录的所有用户。

我将如何使用 DynamoDB 执行此操作?

我一直在查看本地二级索引,并考虑制作LastLoginDate二级索引。但是我如何理解文档,二级索引仅有助于为相同的哈希键排序结果,在我的情况下,每个用户都有一个唯一的UserName. 这会使这样的二级索引毫无意义吗?

提前致谢!

4

3 回答 3

3

您是对的,除非您进行全表扫描,否则您必须始终按 HashKey 查询。

进行全表扫描,您可以查看表中的每个条目并比较它们的 LastLoginDate。根据您拥有的用户数量,这可能很快变得无法扩展。

于 2013-06-09T10:14:50.277 回答
2

您可以在 LastLoginDate 上创建 GSI,并通过向 GSI 发起查询来应用您的逻辑。这可能有助于更快地获得结果,而不是扫描敌人的 HASH 键并检查 LastLoginDate 和应用逻辑。

于 2015-01-31T13:37:44.127 回答
-1

我解决这个问题的方法是创建哈希键,例如“userType”,它可以是“regularUser”、“admin”等。用户名可以是范围键,LastLoginDate 可以是索引。

然后,您可以通过提供哈希键“regularUser”和范围键“例如某些用户名”来查询特定用户的表。当您希望所有用户依赖于他们的上次登录时间而不是范围键“用户名”时,请使用索引“LastLoginDate”。

于 2013-12-09T16:01:44.800 回答