Cassandra中的模型和有序列表

时间:2013-01-23 09:10:39

标签: cassandra cql cql3

我需要建模一个项目列表,这些项目按照项目上次更新的时间排序。

例如考虑用户任务列表。每个用户都有一个任务列表,每个任务都有截止日期。任务可以添加到该列表中,但任务的截止日期可以在添加到列表后更改。 也就是说,作为任务更新的截止日期的结果,可能必须将用户A的任务列表中的第3位置的任务移动到第1位。

我现在所拥有的是以下CF:

Create Table UserTasks (
    user_id uuid,
    task_id timeuuid,
    new_due_date timestamp
    PRIMARY KEY (user_id, task_id));

我知道我不能对'new_due_date'进行排序,除非它是密钥的一部分。 但是如果它是密钥的一部分那么它除非被删除并重新创建,否则无法更新。 我这样做的顾虑是,如果100.000用户的任务列表中存在任务,那么我需要进行100.000选择/删除/插入序列。 如果我可以对new_due_date进行排序,那么它就是100.000更新

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

好吧,一个选项是如果使用带有cassandra的PlayOrm,您可以通过user_id进行分区并查询用户的UserTasks。如果你查询时间> 0和时间< MAX,它返回一个游标(一次读取batchSize行),你可以按相反的顺序或只是简单的顺序遍历游标。这个解决方案可以根据用户数量无限扩展,但每个用户只能扩展到数百万个任务,这可能没问题,但我不太了解您的域名。

迪安