Cassandra数据建模方法

时间:2014-06-05 10:56:40

标签: cassandra cql3

我在cassandra下面最初设计了静态列族

create table APP_DATA (
CODE varchar, 

DATA varchar,

CREATED_DT timestamp,

REQUEST_TYPE int,

STATUS int,

..... #Some more columns ...,

PRIMARY KEY ((CODE,DATA),CREATED_DT))

 with clustering order by (CREATED_DT desc);

现在,我想查询以下内容

1)选择

SELECT * FROM APP_DATA WHERE CODE='1' AND DATA='1111111111';

SELECT * FROM APP_DATA WHERE CODE='1' AND DATA='1111111111' AND CREATED_DT<=dateof(now()) AND STATUS=0;

SELECT * FROM APP_DATA WHERE CODE='1' AND DATA='1111111111' AND CREATED_DT<=dateof(now()) AND STATUS=0 AND REQUEST_TYPE=9;

2)删除

DELETE FROM APP_DATA WHERE CREATED_DT+5<=sysdate;

我应该如何进行数据建模? 我应该如何设计以更快地进行上述选择和删除查询? 请指导..

先谢谢。

2 个答案:

答案 0 :(得分:0)

嗨首先从PRIMARY KEY中取出CREATED_DT列,然后在PRIMARY KEY中留下两列。将CREATED_DT设为普通列,并创建要查询的二级索引。

要删除超过五天的数据(CREATED_DT + 5&lt; = sysdate),请使用Cassandra的TTL(生存时间)功能。

我希望它可以帮到你。

答案 1 :(得分:0)

这是事情。我认为你的表看起来不错,你需要从主键中取出CREATED_DT,因为你将它分组为DESC。而且,为了做到这一点,你必须使它成为一个集群列。

其次,Cassandra实践是一种查询驱动的方法。这意味着您创建一个表来满足查询。尽量避免尽可能多地创建辅助索引,并改为创建表以满足查询。

你DML应该基于分区键。