【问题标题】:Cassandra CQL: Batch selectCassandra CQL:批量选择
【发布时间】:2016-04-14 16:56:02
【问题描述】:

您好,我在 Cassandra 中有以下表格:

* ---------------------------------------------------------------------------
* Note:
* 'curr_pos' is always fixed, so we can put it into cluster key and order
* In each crawler iteration 'prev_pos', 'domain_*' are updated
* -------------------------------------------------------------------------
* Patterns:
* <domain_name3rd>.<domain_name2nd>.<domain_name1st>
* --------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS lp_registry.keyword_position (
    engine text,
    keyword text,
    updated timestamp,
    domain_name1st text,
    domain_name2nd text,
    domain_name3rd text,
    prev_pos int,
    curr_pos int,
    PRIMARY KEY ((engine, keyword), curr_pos)   
);

在顶级应用程序中,我有一个包含大约数百个关键字的列表。

我需要什么?

对于固定引擎和关键字列表,我想选择所有域及其位置。

更新:应用程序给出的结果将是每个引擎的 NxM 矩阵,具有 N 个用户定义的关键字和 M 个用户定义的域。在每个单元格中将是特定关键字的域位置。

我对什么感到困惑?

我需要根据关键字列表的大小发布 N 个选择。换句话说,我需要遍历应用程序中的关键字,并在每次迭代中将选择发送到数据库。

我希望 N 不会大于 100,但我仍然认为这是太多的查询。

我的问题

我可以将这些选择打包成一个批次吗?怎么样?

【问题讨论】:

    标签: php cassandra cql cassandra-2.2 nosql


    【解决方案1】:

    其实不是批量查询的问题,而是你的表的设计问题。

    如果您描述的查询是您的应用程序的“核心”查询,那么您应该以一种单一查询的方式设计表,即。engine 和 @987654322 @ 应该是集群键而不是分区键。

    提供更具体的建议:您如何获得引擎和关键字的列表,是否有一些在逻辑上对它们进行分组?这可能是您表的分区键。

    【讨论】:

    • 谢谢。关键字和引擎列表是用户定义的。每个用例都有自己的列表。对于这些输入,应用程序将为每个引擎生成一个矩阵 N x M .. N 行 - 关键字和 M 列 - 域。在每个单元格中将是特定关键字的域位置。由于域列表 - 列 - 也是用户定义的,我无法想象如何在单个选择中创建这样的矩阵。
    猜你喜欢
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2014-01-03
    • 2016-07-10
    • 2017-01-14
    • 2013-07-15
    • 2013-09-13
    相关资源
    最近更新 更多