Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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 web services 使用任意值作为dynamodb扫描或查询的“ExclusiveStartKey”安全吗?_Amazon Web Services_Amazon Dynamodb_Dynamodb Queries - Fatal编程技术网

Amazon web services 使用任意值作为dynamodb扫描或查询的“ExclusiveStartKey”安全吗?

Amazon web services 使用任意值作为dynamodb扫描或查询的“ExclusiveStartKey”安全吗?,amazon-web-services,amazon-dynamodb,dynamodb-queries,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,根据ExclusiveStartKey(对于扫描和查询)的DynamoDB API参考,我们有: 此操作将评估的第一项的主键。使用上次操作中为LastEvaluatedKey返回的值 我有一个用例,我想使用ExclusiveStartKey从特定的已知位置开始扫描(而不是使用它继续现有的扫描)。上面的第一句听起来完全可以,但第二句不行。第二句话让我停顿了一下,特别是因为它不是“你应该[…]”或“你必须[…]”,只是一个简单的古老命令,没有上下文或解释 我在SO或其他地方找不到任何这样使用Excl

根据
ExclusiveStartKey
(对于
扫描
查询
)的DynamoDB API参考,我们有:

此操作将评估的第一项的主键。使用上次操作中为LastEvaluatedKey返回的值

我有一个用例,我想使用
ExclusiveStartKey
从特定的已知位置开始扫描(而不是使用它继续现有的扫描)。上面的第一句听起来完全可以,但第二句不行。第二句话让我停顿了一下,特别是因为它不是“你应该[…]”或“你必须[…]”,只是一个简单的古老命令,没有上下文或解释


我在SO或其他地方找不到任何这样使用
ExclusiveStartKey
的人的例子。这似乎是可行的,但API的参考资料似乎不清楚这是否会偏离合同。我应该换一条路吗?有没有人在实践中使用过它,并且可以确认它是可靠的?

是的,您应该在这个用例中使用ExclusiveStartKey,因为这就是它的用途。如果您第一次打电话时还不知道从哪里开始(没有LastEvaluatedKey),那么您可以不包括ExclusiveStartKey,因为它是可选的


我认为第二句很清楚地暗示了“应该”,而他们没有说“必须”的原因是,从技术上来说,你可以使用任何扫描过的钥匙,但是你可以,在正确扫描所有物体的情况下,应使用LastEvaluatedKey。

DynamoDB使用哈希函数对所有主键进行排序,然后将其存储在正确的存储桶中。扫描文档时,使用
ExclusiveStartKey
可以知道我们应该在哪个存储桶中继续扫描,以及该存储桶上的下一个文档是什么

ExclusiveStartKey
使用任何任意键都是完全安全的,因为即使DynamoDB也无法预测它将落在哪个桶上。出于同样的原因,它也是无用的,除非您想从数据库中获取随机文档