Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb DynamoDB如何搜索值列表_Amazon Dynamodb - Fatal编程技术网

Amazon dynamodb DynamoDB如何搜索值列表

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并为所有项目提

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

我想检索列表中的所有员工ID。他们都为同一个组织工作,但并非该组织的所有员工

在SQL中,我将执行以下操作:

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调用的网络延迟是显著的,这种想法对吗?