【发布时间】:2014-12-05 17:52:05
【问题描述】:
假设我有一个 Cassandra DB,我需要处理大量数据,我可以使用 SELECT 查询这些数据。问题是处理速度太慢,我想使用分布式系统来完成这项工作。如何重塑 CQL 查询,以便我只能获得一部分数据?
我知道我可以使用 CQL 的 LIMIT 功能获得有限数量的行,但我需要更像 LIMIT 和 OFFSET 的东西,以便每个进程都可以获得独立的数据块。 (OFFSET 最终会在 CQL 中实现吗?我读过它效率低下,是不是它没有实现的原因?)
如Cassandra pagination: How to use get_slice to query a Cassandra 1.2 database from Python using the cql library 中所建议,我希望避免等待查询结束来开始下一个查询。这将使进程在等待之前的查询完成时保持空闲状态。
例如,假设我想处理天气数据,目前我的表看起来像(我可以使用其他数据类型进行存储,例如 timeuuid 表示时间,这只是一个虚拟问题):
CREATE TABLE weather_data (
station varchar,
date varchar,
time varchar,
value double,
PRIMARY KEY ( (station,date), time )
);
对于给定的电台和日期,我想创建数据块(基于时间)。我可以假设我知道我对每个站点和日期有多少度量。
如果正确答案是“改变表格的结构”,我很乐意看看如何修改它。
【问题讨论】:
-
这一切都取决于你的数据模型以及你如何查询它,你是否知道分区键之前等等。
-
@CarloBertuccini 我已经编辑了我的问题,希望对您有所帮助!
标签: cassandra-2.0 cql3