我打算有一个作为哈希键和属性(等等)的User
表。UserName
LastLoginDate
我希望能够查询表中的内容,例如:上个月未登录的所有用户。
我将如何使用 DynamoDB 执行此操作?
我一直在查看本地二级索引,并考虑制作LastLoginDate
二级索引。但是我如何理解文档,二级索引仅有助于为相同的哈希键排序结果,在我的情况下,每个用户都有一个唯一的UserName
. 这会使这样的二级索引毫无意义吗?
提前致谢!
我打算有一个作为哈希键和属性(等等)的User
表。UserName
LastLoginDate
我希望能够查询表中的内容,例如:上个月未登录的所有用户。
我将如何使用 DynamoDB 执行此操作?
我一直在查看本地二级索引,并考虑制作LastLoginDate
二级索引。但是我如何理解文档,二级索引仅有助于为相同的哈希键排序结果,在我的情况下,每个用户都有一个唯一的UserName
. 这会使这样的二级索引毫无意义吗?
提前致谢!
您是对的,除非您进行全表扫描,否则您必须始终按 HashKey 查询。
进行全表扫描,您可以查看表中的每个条目并比较它们的 LastLoginDate。根据您拥有的用户数量,这可能很快变得无法扩展。
您可以在 LastLoginDate 上创建 GSI,并通过向 GSI 发起查询来应用您的逻辑。这可能有助于更快地获得结果,而不是扫描敌人的 HASH 键并检查 LastLoginDate 和应用逻辑。
我解决这个问题的方法是创建哈希键,例如“userType”,它可以是“regularUser”、“admin”等。用户名可以是范围键,LastLoginDate 可以是索引。
然后,您可以通过提供哈希键“regularUser”和范围键“例如某些用户名”来查询特定用户的表。当您希望所有用户依赖于他们的上次登录时间而不是范围键“用户名”时,请使用索引“LastLoginDate”。