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