我尝试在 Cassandra 中存储时事通讯邮件应用程序的电子邮件。
当前架构是:
CREATE TABLE emails (
email varchar,
comment varchar,
PRIMARY KEY (email));
我不知道如何获取按添加时间排序的电子邮件(因此可以在不同节点上并行处理电子邮件)。
cassandra 上的 PlayOrm 可以在幕后为您做这类事情,只要您能够对数据进行分区以便仍然可以扩展。您可以查询您的分区。order by 尚不存在,但一个技巧是使用 where time > 0 来获取 1970 纪元之后的所有内容,这迫使它使用时间索引,然后只是向后遍历光标以进行反向排序(或向前遍历排序顺序)。
Cassandra 根据您的列比较器在写入时订购。您不能使用谓词中的任意列对结果进行排序。如果要按时间顺序检索,则必须插入时间戳作为列名(或复合名称中的第一个元素)。您还可以创建第二个 CF 来存储按时间排序的记录,如果需要,您可以查询这些记录。不幸的是,CQL 给人一种类似于 RDBMS 的查询能力的错觉,而实际上它仍然是具有相关查询能力的列存储。我的建议是避免使用 CQL(并改用基于 Thrift 的查询)或确保您了解它在幕后所做的事情。