我想使用Cassandra数据库系统创建表。原始数据在图片中。
所以我创建这些表并插入值
Create table course(
Course_ID text PRIMARY KEY,
Course_Name text,
student_id text
);
但是,当我想从“美国历史”课程中选择所有学生证时:select * from course where Course_Name = 'Biology';
Error from server: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"
然后,当我尝试打印所有表时,我发现缺少所有具有部分重复值的值...是因为我设计表的方式错误吗?如何更改它并从一门课程中选择所有学生ID? 谢谢!
答案 0 :(得分:2)
问题是您对表course
的查询未使用主键;与关系数据库不同,Cassandra中的表是根据要执行的查询而设计的,在这种情况下,您可以将课程名称作为组合键的一部分:
Create table course(
Course_ID text,
Course_Name text,
student_id text,
PRIMARY KEY (Course_Name, Course_ID)
);
已经有答案解释this one之类的键之间的区别,您可能还想阅读this article from Datastax