Cassandra 数据库设计

Cassandra 2.*
CQL3.1
最近更新:2015-10-30

索引的设计

在Cassandra中经常会发现,索引不够用,不好用,各种不强大。
比如,我关注的人的需求uid + follow 作为主键,没人觉得有什么问题,但是查看我关注的人的时候,需要用关注的时间排序,这就麻烦了。
目前我采用的一个办法是,再建立一张表保存uid ,follow,time(关注日期)而这张表使用,uid + time作为主键,这样就可以通过先查询这张表来排序。
Note: 唯一索引一定用主表实现,否非常不方便,因为主表经常要增删改查,索引表主要是增、查、删,几乎不改。

可变排序字段

到目前为止我所了解的Cassandra排序,都需要基于主键,而主键是不允许UPdate的,所以,如果你需要一个可以编辑又可以排序的字段,
在处理数据的时候,需要先delete再insert。

timeuuid 成为第二主键

由于timeuuid的唯一性,很多场合下,你需要按照时间排序,又希望主键具有唯一性的时候,可以使用timeuuid。
比如我的好友,按添加时间排序

create table user (
    uid int,
    create_time timeuuid,
    friend_id int,
    primary key(uid, create_time)
);
--这样,你可以使用uid + create_time进行删除操作,而不用担心删错数据,因为timeuuid是唯一的。同时,排序顺序是按照create_time来进行的。
--而uid 和 friend_id的唯一性,你需要另建一个表来处理。
原文地址:https://www.cnblogs.com/didda/p/4861331.html