DynamoDB的文档中说:
在查询操作中,DynamoDB按排序顺序检索项目,然后使用可能存在的任何过滤表达式(FilterExpression)和关键字条件表达式(KeyConditionExpression)处理项目。
以及:
单个查询操作最多可以检索1 MB的数据。在将任何FilterExpress
应用于结果之前,此限制适用。
这是否意味着在此1MB限制之前应用了关键条件表达式?
事实上,你的解释是正确的。使用KeyConditionExpression,DynamoDB只能有效地获取与其标准匹配的数据,您只需支付此匹配数据的费用,1MB的读取大小将应用于匹配数据。但对于过滤表达式(FilterExpression),情况就不同了:DynamoDB没有有效的方法来过滤掉不匹配的项,然后实际提取所有项,然后过滤掉不需要的项。因此,您需要为读取整个未过滤数据付费(在FilterExpression之前),1MB的最大值也对应于未过滤的数据。
如果您仍然不相信这是应该的,那么这里还有另一个问题需要考虑:假设您的数据库中有1G的数据要扫描(或在单个要查询的键中),过滤后的结果将只有1KB。如果您进行此查询并希望返回1000字节,Dynamo将需要在返回之前读取并处理整个1GB的数据。这可能需要很长时间,您不知道需要多长时间,并且在等待结果时可能会超时。因此,Dynamo确保在从磁盘读取每1MB的数据(并且您为此付费;-)后返回给您。在长时间查询期间,控件将返回给您1000次(=1GB/1MB),您将没有机会超时。我不知道1MB的限制在这里是否有意义,或者它应该更大,也许我们应该对响应大小和读取量有不同的限制-但肯定需要对读取量进行某种限制,即使它不能转化为大的响应。
顺便说一下,扫描文档中包含了1MB限制的解释,其措辞略有不同,您可能会发现它比查询文档中的版本更清楚:
单次扫描操作将读取最多设置的最大项数(如果使用Limit参数)或最多1 MB的数据,然后使用FilterExpression对结果应用任何筛选。
我对DynamoDB上的查询/扫描限制有疑问。 我的表有1000条记录,对所有记录的查询都返回50个值,但是如果我把设为5,这并不意味着查询将返回前5个值,它只是说对5个项目的查询表(以任何顺序,所以它们可能是非常旧的项目或新的项目),所以我有可能在查询中得到0个项目。如何实际获得查询的最新5项?我需要设置一个为5(数字是例子),因为查询/扫描更多的项目会很昂贵。 该查询具有此输入 我的表的索引是
我不了解DynamoDb中查询/扫描限制的概念。根据文件: 单个查询操作最多可以检索1 MB的数据。在对结果应用任何FilterExpression之前,此限制适用。 假设我有10k个条目,每个条目250kb,所有条目都符合查询参数。 如果我运行一个简单的查询,我只得到4个项目?
我有一个要求,在Dynamodb中查询表时只需要返回一行。我可以在aws cli中看到一个名为“max items”的参数,它显然限制了查询的结果大小。以下是示例查询: 但我无法在Go中找到任何类似的关键字/属性。 以下是我可以找到的相关内容:如何使用Java设置DynamoDB返回的匹配项的限制?
使用javascript aws sdk和查询dynamodb表,以及文档客户端。该表包含10个元素,查询限制=5。 对于每个请求,我使用LastEvaluatedKey构建一个新查询并发送一个新请求,结果如下: 根据这份文件 如果结果包含LastEvaluatedKey元素,请转至步骤2。如果结果中没有LastEvaluatedKey,则没有其他要检索的项 它应该不会在第二个请求中返回LastE
问题内容: 如何限制JPQL命名查询的选择查询?我需要在查询级别本身而不是在Java层中完成限制!!!我正在尝试使用 但徒劳!!! 请建议 问题答案: 没有提供限制查询的机制。这通常是通过使用上的方法来实现的。如果必须避免在Java代码中指定此内容,则可以在包含查询并执行限制的数据库中进行查看。然后像将表一样将实体映射到此视图。 例:
问题内容: 我正在构建一个小界面,希望用户能够写出他们的 整个 sql语句,然后查看返回的数据。但是,我不希望用户能够做任何有趣的事情,即。实际上,我希望用户能够做的唯一一件事就是运行语句。我知道没有特定的SQLite用户,所以我在考虑要制定的一套规则来拒绝某些查询。也许是正则表达式字符串之类的东西(正则表达式使我有些害怕)。关于如何做到这一点的任何想法? 问题答案: 我可以为您的问题建议另一种方