使用唯一的哈希属性查询DynamoDB?

时间:2013-05-23 00:16:39

标签: database amazon-web-services nosql amazon-dynamodb

我计划将一个User表作为哈希键,UserName作为哈希键和LastLoginDate属性(等等)。

我希望能够查询表格,例如:上个月没有登录的所有用户。

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

我一直关注当地的二级指数,并考虑将LastLoginDate作为二级指数。但我如何理解documentation,辅助索引仅帮助对相同散列键的顺序进行排序,在我的情况下,每个用户都有一个唯一的UserName。这会使这样的二级索引毫无意义吗?

提前致谢!

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:-1)

我解决这个问题的方法是创建哈希键,例如'userType',可以是'regularUser','admin'等。 UserName可以是范围键,LastLoginDate可以是索引。

然后,您可以通过提供散列键'regularUser'和范围键'some user name'来查询特定用户的表。如果您希望所有依赖于上次登录时间而非范围键'UserName'的用户使用索引'LastLoginDate'。