【问题标题】:What is CQL for Cassandra fetchSizeCassandra fetchSize 的 CQL 是什么
【发布时间】:2020-03-29 16:58:58
【问题描述】:

我相信我已经成功实现了 Cassandra Java 集成解决方案,在该解决方案中,我以块的形式取回所有表,由取回大小指定,如此处所述 https://docs.datastax.com/en/developer/java-driver/3.2/manual/paging/#setting-the-fetch-size

我还启用了 QueryLogger,我确实看到了每个块的 CQL 语句,但它的内容如下:

 select * from table;

每次。而我本来希望包含一些页面/偏移信息,并且 cql 看起来 something (即仅用于说明目的,请不要将 cql 视为语法正确!)例如:

 select * from table limit 10, offset 20;

CQL 是否被截断,我们是如何工作的?谢谢

【问题讨论】:

    标签: java cassandra


    【解决方案1】:

    这就是 CQL 的工作方式——查询保持不变,但是当检索到下一页时,驱动程序发送一个从前一页获得的分页状态——它不会修改查询(顺便说一句,没有例如 offset 在 Cassandra 中)。

    技术细节are described in the native protocol specification,如果您有兴趣。

    【讨论】:

    • 感谢 Alex,它澄清了 CQL 问题。我仍然不了解总体情况,但会重新阅读文档几次,希望它会点击。粗略地说:这听起来正确吗?我们有一个应用程序、应用程序数据库驱动程序和数据库本身。在字节移动方面,适当的分页块从 db 发送到 db 驱动程序(并发送到应用程序) - 但它不是(单独)通过 CQL 实现的,而是通过 QUERY 和 EXECUTE 消息实现的。
    • 基本上,Java 驱动程序文档中包含所有详细信息。虽然我建议从最新版本之一中获取文档,例如:docs.datastax.com/en/developer/java-driver/3.8/manual/paging/…docs.datastax.com/en/developer/java-driver/4.5/manual/core/…
    • 有趣的是,当我有一个超过一些时间限制的查询时,记录器会报告这个查询——这更像是我最初期望看到的 SELECT * FROM table WHERE token (ocode) > token(21d438f2-71bf-11ea-ab85-7f77869654c1) LIMIT 10000 (见 tombstone_warn_threshold)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2018-02-15
    相关资源
    最近更新 更多