DynamoDB如何搜索值列表

时间:2018-07-25 07:16:21

标签: amazon-dynamodb

我有一个带有分区键和排序键的DynamoDB实例。假设它们是组织(哈希键)和员工ID(排序键)。

我想检索所有ID在列表中的员工。他们都在同一个组织中工作,但不是该组织所有员工的全部。

在SQL中,我会做类似的事情:

select * from table where organisation_id = 'org' and employee_id in [list of ids]

DynamoDB中似乎没有类似的东西。

我的选择似乎是: 1)使用查询对所有员工ID进行迭代 2)使用BatchGetItems并为所有项目提供Organisation_id:employee_id

第一个似乎会比较慢,因为它涉及多个请求,而第二个是单个请求,但可能会消耗更多的RCU。

其中哪些是该问题的首选解决方案?还是我错过了更好的第三种方式?

1 个答案:

答案 0 :(得分:0)

我将使用GetItem遍历您的列表,将找到的每个员工添加到集合中。这种方法并不慢-DynamoDB专为使用键快速获取许多项目而设计。

因为您同时具有分区键和范围键,所以不需要使用查询。如果您说想要一个组织的所有员工,则只会使用查询。

如果列表特别大,则可以使用BatchGetItem,它将创建多个并行线程,因此减少了延迟。除非您有很多物品要买,否则您不会发现太大差异。

顺便说一下,DynamoDB确实有一个'IN'运算符,但是您不能在KeyConditions上使用它。