Cassandra CQL:批处理 select
Cassandra CQL: Batch select
嗨,我在 Cassandra 中关注 table:
* ---------------------------------------------------------------------------
* 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)
);
在顶级应用程序中,我有一个包含大约数百个关键字的列表。
我需要什么?
对于固定引擎和关键字列表,我想 select 所有域及其位置。
更新:应用程序给出的结果将是每个引擎的 NxM 矩阵,具有 N 个用户定义的关键字和 M 个用户定义的域。在每个单元格中将是特定关键字的域位置。
我在混淆什么?
我需要 post N selects 取决于关键字列表的大小。换句话说,我需要遍历应用程序中的关键字,并在每次迭代中将 select 发送到数据库。
我预计 N 不会大于 100,但我仍然认为查询太多。
我的问题
我可以将这些 select 打包成一个批次吗?怎么样?
其实不是批量查询的问题,而是你table的设计问题。
如果您描述的查询是您应用程序的 "core" 查询,那么您应该将 table 设计为单个查询, 即。 engine
和 keyword
应该是集群键而不是分区键。
给个更具体的建议:引擎和关键字列表是怎么得到的,有没有逻辑上分组的?那可能是您的 table.
的分区键
嗨,我在 Cassandra 中关注 table:
* ---------------------------------------------------------------------------
* 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)
);
在顶级应用程序中,我有一个包含大约数百个关键字的列表。
我需要什么?
对于固定引擎和关键字列表,我想 select 所有域及其位置。
更新:应用程序给出的结果将是每个引擎的 NxM 矩阵,具有 N 个用户定义的关键字和 M 个用户定义的域。在每个单元格中将是特定关键字的域位置。
我在混淆什么?
我需要 post N selects 取决于关键字列表的大小。换句话说,我需要遍历应用程序中的关键字,并在每次迭代中将 select 发送到数据库。
我预计 N 不会大于 100,但我仍然认为查询太多。
我的问题
我可以将这些 select 打包成一个批次吗?怎么样?
其实不是批量查询的问题,而是你table的设计问题。
如果您描述的查询是您应用程序的 "core" 查询,那么您应该将 table 设计为单个查询, 即。 engine
和 keyword
应该是集群键而不是分区键。
给个更具体的建议:引擎和关键字列表是怎么得到的,有没有逻辑上分组的?那可能是您的 table.
的分区键