我打算将 User
表作为哈希键 UserName
和 LastLoginDate
属性(等等) .
我希望能够查询表格,例如:上个月没有登录的所有用户 .
我如何使用DynamoDB执行此操作?
我一直在寻找当地的二级指数,并考虑将 LastLoginDate
作为二级指数 . 但我如何理解documentation,二级索引只能帮助对相同的哈希键进行排序,在我的情况下,每个用户都有一个唯一的 UserName
. 这会使这样的二级索引毫无意义吗?
提前致谢!
我打算将 User
表作为哈希键 UserName
和 LastLoginDate
属性(等等) .
我希望能够查询表格,例如:上个月没有登录的所有用户 .
我如何使用DynamoDB执行此操作?
我一直在寻找当地的二级指数,并考虑将 LastLoginDate
作为二级指数 . 但我如何理解documentation,二级索引只能帮助对相同的哈希键进行排序,在我的情况下,每个用户都有一个唯一的 UserName
. 这会使这样的二级索引毫无意义吗?
提前致谢!
3 回答
你是对的,你必须总是通过HashKey查询,除非你做全表扫描 .
进行全面扫描,您可以查看表中的每个条目并比较它们的LastLoginDate . 根据您拥有的用户数量,这可以很快变为不可扩展 .
您可以在LastLoginDate上创建GSI,并通过将查询发送到GSI来应用您的逻辑 . 这可能有助于更快地获得结果,而不是扫描敌人的HASH密钥并检查LastLoginDate和应用逻辑 .
我解决这个问题的方法是创建哈希键,例如'userType',可以是'regularUser','admin'等.UserName可以是范围键,LastLoginDate可以是索引 .
然后,您可以通过提供散列键'regularUser'和范围键'some user name'来查询特定用户的表 . 如果您希望所有依赖于上次登录时间而非范围键'UserName'的用户使用索引'LastLoginDate' .