2012-07-25 29 views
3

我需要跟踪Cassandra中的数据版本。我在想,Version#会是一个超级列,实体ID将是行ID,然后我需要跟踪的列将是列。因此,举例来说,实体1版本将是:在Schema中适当使用Supercolum

  • supercolumn:V1
  • ROWID:UUID
  • 列:时间戳,将requestId,用户ID,状态,数据等...

查询时,最常见的请求将被

  • 给我X版本备案Ÿ
  • 给我版本X - 1和X + 1 记录y。

较小重要的是,会查询,如:

  • 给我处于状态1
  • 给我的用户ID X更改的所有记录都行。
  • 给我所有行的时间戳在x和y之间。

所以上面的方法超级列是最好的方法或是否有更好的模式来完成上述。是否有使用/查询需要注意的超级列的警告?

回答

4

首先,不要使用超级列。它们被有效地弃用,并有许多缺点。在您的模型中,您可以使用具有两个组件的组合键轻松替换组合键的超级列,其中第一个是您的UUID,第二个是您的版本。您的所有查询都将受此模型的支持。 Check this out了解有关复合材料的更多信息。

+0

哇,我很高兴我问了这个问题。我已经按照我所描述的进行了编码。那么复合材料本质上是rowid(我的rowid变成了UUID:版本)?或者合成“列名称”,并且每个列都将变为,例如requestid:version,userid:version,state:version,data:version等。 – AlexGad 2012-07-26 03:01:47

+0

您可以有复合键或列。在你的情况下,带有UUID:版本的组合键似乎满足你的用例。 – 2012-07-26 13:00:28