Cassandra的一些疑问

时间:2016-05-16 10:37:46

标签: cassandra

我创建了数据库"电影"有三个列系列:

CREATE TABLE movies (
    movie_id int primary key,
    title text,
    avg_rating decimal,
    total_ratings int,
    genres set<text>
);

# shows all ratings for specific movie
CREATE TABLE ratings_by_movie (
    movie_id int,
    user_id int,
    rating decimal,
    ts int,
    primary key(movie_id, user_id)
);

# show all ratings of specific user
CREATE TABLE ratings_by_user (
    user_id int,
    movie_id int,
    rating decimal,
    ts int,
    primary key(user_id, movie_id)
); 

是否可以进行以下查询?

  1. 显示评论最多的电影
  2. 显示平均评分为&gt; = 4
  3. 的所有电影
  4. 根据评分显示100部最佳影片

1 个答案:

答案 0 :(得分:1)

Cassandra =没有加入。您的模型是100%关系型的。你需要为Cassandra重新思考它。我建议你看看这些幻灯片。他们深入研究如何为cassandra建模数据。这里还有一个关于该主题的网络研讨会。但是不要再考虑外键和连接表了,因为如果你需要关系,cassandra就不是工作的工具。

但为什么?

因为那时您需要检查一致性并执行关系数据库所做的许多其他事情,因此您将失去cassandra提供的性能和可伸缩性。

我该怎么办?

非规范化!一张表中有大量数据?但是这个表会有太多列! 所以? Cassandra可以处理表格中的大量列。

有关详细信息,请查看:How to do a join queries with 2 or more tables in cassandra cql