1

我尝试在 Cassandra 中存储时事通讯邮件应用程序的电子邮件。

当前架构是:

CREATE TABLE emails (
    email varchar,
    comment varchar,
    PRIMARY KEY (email));

我不知道如何获取按添加时间排序的电子邮件(因此可以在不同节点上并行处理电子邮件)。

4

2 回答 2

1

cassandra 上的 PlayOrm 可以在幕后为您做这类事情,只要您能够对数据进行分区以便仍然可以扩展。您可以查询您的分区。order by 尚不存在,但一个技巧是使用 where time > 0 来获取 1970 纪元之后的所有内容,这迫使它使用时间索引,然后只是向后遍历光标以进行反向排序(或向前遍历排序顺序)。

于 2013-02-26T13:53:49.460 回答
0

Cassandra 根据您的列比较器在写入时订购。您不能使用谓词中的任意列对结果进行排序。如果要按时间顺序检索,则必须插入时间戳作为列名(或复合名称中的第一个元素)。您还可以创建第二个 CF 来存储按时间排序的记录,如果需要,您可以查询这些记录。不幸的是,CQL 给人一种类似于 RDBMS 的查询能力的错觉,而实际上它仍然是具有相关查询能力的列存储。我的建议是避免使用 CQL(并改用基于 Thrift 的查询)或确保您了解它在幕后所做的事情。

于 2013-02-23T17:54:11.233 回答