Amazon dynamodb DynamoDB如何搜索值列表
我有一个带有分区键和排序键的DynamoDB实例。假设它们是组织(散列键)和员工id(排序键) 我想检索列表中的所有员工ID。他们都为同一个组织工作,但并非该组织的所有员工 在SQL中,我将执行以下操作:Amazon dynamodb DynamoDB如何搜索值列表,amazon-dynamodb,Amazon Dynamodb,我有一个带有分区键和排序键的DynamoDB实例。假设它们是组织(散列键)和员工id(排序键) 我想检索列表中的所有员工ID。他们都为同一个组织工作,但并非该组织的所有员工 在SQL中,我将执行以下操作: select * from table where organisation_id = 'org' and employee_id in [list of ids] 在DynamoDB中似乎没有一个等价物 我的选择似乎是: 1) 使用查询或 2) 使用BatchGetItems并为所有项目提
select * from table where organisation_id = 'org' and employee_id in [list of ids]
在DynamoDB中似乎没有一个等价物
我的选择似乎是:
1) 使用查询或
2) 使用BatchGetItems并为所有项目提供组织标识:员工标识
第一个请求似乎速度较慢,因为它涉及多个请求,而第二个请求是单个请求,但可能会消耗更多的RCU
以下哪一项是解决此问题的首选方案?还是我缺少了更好的第三种方法?我会使用GetItem迭代您的列表,将找到的每个员工添加到一个集合中。这种方法并不慢——DynamoDB是专门为使用键快速获取大量项目而设计的 不需要使用查询,因为您同时拥有分区键和范围键。只有当您想要一个组织的所有员工时,才会使用查询 如果列表特别大,可以使用BatchGetItem,这将创建多个并行线程,从而减少延迟。除非你有很多东西要买,否则你不会发现有什么不同
顺便说一下,DynamoDB确实有一个“IN”操作符,但您不能在关键条件下使用它。感谢您的回复和IN的澄清。我需要取回的物品数量将低于100件(从数百万件)。与单个BatchGetItem相比,100个GetItem调用的网络延迟是显著的,这种想法对吗?