gpt4 book ai didi

amazon-web-services - 为什么 DynamoDB LastEvaluatedKey 取决于查询的限制?

转载 作者:行者123 更新时间:2023-12-04 08:11:00 25 4
gpt4 key购买 nike

使用 javascript aws-sdk 并通过文档客户端查询 dynamodb 表。该表包含 10个元素和查询 限制 = 5 .

对于每个请求,我使用 LastEvaluatedKey 构建新查询并发送新请求,结果如下:

first request --> {Items: Array(5), Count: 5, ScannedCount: 5, LastEvaluatedKey: {…}}
second request --> {Items: Array(5), Count: 5, ScannedCount: 5, LastEvaluatedKey: {…}}
third request --> {Items: Array(0), Count: 0, ScannedCount: 0}

根据这个 doc

If the result contains a LastEvaluatedKey element, proceed to step 2. If there is not a LastEvaluatedKey in the result, then there are no more items to be retrieved



它应该不会在第二个请求中返回 LastEvaluatedKey,因为没有更多元素,但它返回一个在第三个请求中发送到空结果的元素。

当我尝试使用 时限制 = 4 ,一切都按预期进行
first request --> {Items: Array(4), Count: 4, ScannedCount: 4, LastEvaluatedKey: {…}}
second request --> {Items: Array(4), Count: 4, ScannedCount: 4, LastEvaluatedKey: {…}}
third request --> {Items: Array(2), Count: 2, ScannedCount: 2} <--- there is no LastEvaluatedKey as expected

那么这里发生了什么?

最佳答案

你所看到的是预期的。

这个说法是正确的:

If there is not a LastEvaluatedKey in the result, then there are no more items to be retrieved



但是,您似乎假设它意味着逆条件也是正确的,但事实并非如此......

If there are no more items to be retrieved, then there is not a LastEvaluatedKey in the result #false



这不是第一个陈述所暗示的,它在逻辑上不是等价的,也不是真的。

如果服务恰好达到了您的限制,则它不知道是否可能有更多匹配的记录要查找,因此它会为您提供评估的最后一条记录,以便您可以在下一个请求中继续搜索。可能有更多,也可能没有。这是为尽快将结果返回给您所必需的优化的必然结果。否则,该服务将需要继续寻找至少一个匹配项,即使它已经找到了足以满足您的限制的匹配项。

如果搜索到达终点而没有达到您的限制,则它知道没有更多要搜索的内容,因此它不会返回 LastEvaluatedKey .

关于amazon-web-services - 为什么 DynamoDB LastEvaluatedKey 取决于查询的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com