0

我需要建模一个按项目最后更新时间排序的项目列表。

例如考虑一个用户任务列表。每个用户都有一个任务列表,每个任务都有一个截止日期。任务可以添加到该列表中,但任务的截止日期也可以在添加到列表后更改。即,在用户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 次更新

任何建议将不胜感激。

4

1 回答 1

0

好吧,一种选择是如果将 PlayOrm 与 cassandra 一起使用,您可以按 user_id 分区并查询用户的 UserTasks。如果您查询时间 > 0 和时间 < MAX 的位置,它会返回一个游标(一次读取 batchSize 行),您可以以相反的顺序或简单的顺序遍历游标。此解决方案可随用户数量无限扩展,但只能扩展到每个用户数百万个任务,这可能没问题,但我对您的域不够了解。

院长

于 2013-01-24T15:22:21.477 回答