Database design 在where子句Cassandra中使用具有不同属性的select
我需要创建具有以下属性的Cassandra柱族Database design 在where子句Cassandra中使用具有不同属性的select,database-design,cassandra,datastax,denormalization,nosql,Database Design,Cassandra,Datastax,Denormalization,Nosql,我需要创建具有以下属性的Cassandra柱族 id bigint, content varchar, year int, frequency int, 我希望使用此专栏系列获得给定年份中频率最高的内容。 另外,在向表中插入数据时,对于给定的内容和年份,我需要检查id是否已经存在。我怎样才能用卡桑德拉做到这一点 我尝试使用 CREATE TABLE sinmin.word_time_inv_frequency ( id bigint, content varchar, year int, fr
id bigint,
content varchar,
year int,
frequency int,
我希望使用此专栏系列获得给定年份中频率最高的内容。
另外,在向表中插入数据时,对于给定的内容和年份,我需要检查id是否已经存在。我怎样才能用卡桑德拉做到这一点
我尝试使用
CREATE TABLE sinmin.word_time_inv_frequency (
id bigint,
content varchar,
year int,
frequency int,
PRIMARY KEY((year), frequency)
);
然后使用
SELECT id FROM word_time_inv_frequency WHERE year = 2010 ORDER BY frequency ;
但使用此项时,我无法检查CF中(内容,年份)对的条目是否已经存在。您可以使用复合分区键来选择by(内容,年份),并且仍然可以按频率排序: 有了这张桌子,你就可以
create table test2 (
id bigint,
content varchar,
year int,
frequency int,
PRIMARY KEY((year, content), frequency)
);
您的查询将如下所示:
select * from test2 where content ='puppies' and year=2014 order by frequency ;
维护不同的表以满足查询需求是最佳实践。您可以在datastax enterpise(搜索/分析)中查看一些用于特殊查询的集成
请查看以下有关数据建模的视频,以深入了解c*数据建模:
顺便问一下,id是此数据集的唯一标识符吗?在您提供的表def中,如果记录的年份和频率相同,您将覆盖这些记录。确保在主键中获得唯一标识符。
也可以考虑在表定义中使用,如果总是以相同的顺序拉数据。