我有一个表,在AWS Keyspace上有两个键KeyA和KeyB。
我在AWS控制台上打开CQL编辑器并运行查询:
SELECT fields FROM table WHERE KeyA = 'value' AND KeyB = 'value' LIMIT 10 ALLOW FILTERING它返回10行,我将查询复制到我的node.js项目并运行相同的查询,也返回10行。
现在我只想按一个键进行过滤,我在AWS控制台上打开CQL编辑器并运行查询:
SELECT fields FROM table WHERE KeyA = 'value' LIMIT 10 ALLOW FILTERING并返回10个字段,现在我将相同的查询复制并粘贴到我的节点项目中,但这次返回0行。
我想我的node.js上缺少一些配置?是图书馆的问题吗?AWS问题?
我使用的是Node v14.16.1、cassandra-driver v4.6.1
发布于 2021-11-12 21:08:09
当使用允许过滤时,您还应该实现分页,即使您使用的限制是10。
Amazon Keyspace根据处理请求时读取的行数对结果进行分页,而不是根据结果集中返回的行数进行分页。因此,某些页面包含的行数可能少于您在筛选查询的页面大小中指定的行数。此外,Amazon Keyspace在读取1 MB数据后会自动对结果进行分页,从而为客户提供一致的个位数毫秒级读取性能。
由于Amazon Keyspace根据处理请求所读取的行数而不是结果集中返回的行数对结果进行分页,因此,如果您正在运行筛选查询,则某些页面可能不包含任何行。
https://docs.aws.amazon.com/keyspaces/latest/devguide/working-with-queries.html#paginating-results
client.eachRow(query, parameters, { prepare: true, autoPage : true }, function(n, row) {
// Invoked per each row in all the pages
}, callback);最后,完全扫描不是典型的Cassandra访问模式,建议您始终基于完全限定的分区键来访问数据。
https://stackoverflow.com/questions/69940435
复制相似问题