在 Cassandra 中创建 table。订购方式
Create table in Cassandra. Order by
我正在创建一个包含以下列的 table:
- 马克
- 课程名称
- 大学
- Student_ID
- 支付价格
table 应该按标记排序。
它应该在 Cassandra 中完成,我必须执行以下两个查询:
select Student_ID, Course_Name from table where mark='A'
和
select Student_ID, max(Price_Paid) from table group by student_id
我尝试按如下方式定义 table 但它不适用于第二个查询:
CREATE TABLE table_students(
Course Name text,
Price Paid int,
nombre_profesor text,
id_estudiante int,
Mark text,
primary key(Mark, Price Paid, Course Name, Student_ID));
第一个查询有效,但是当我尝试 运行 第二个查询时,一条消息表明支付的价格不应在 Student_ID 出现之前。如果我在两者之间切换顺序,table 排序不正确。
非常感谢您的支持
不要试图用一个 table 来完成它 - Cassandra 的数据建模规则说 - 一个查询,一个 table。所以如果你想按 student_id
聚合,你需要将它作为分区键。用主键创建一个 table 像这样 (student_id, course_name)
.
我建议阅读 this free book(Cassandra。权威指南,第 3 版)的第一章
P.S。此外,将 Mark
作为分区键不是很好 - 它的可能值太少,因此大分区的数量非常有限。相反,您可以向其中添加一些内容,例如年份或类似...
我正在创建一个包含以下列的 table:
- 马克
- 课程名称
- 大学
- Student_ID
- 支付价格
table 应该按标记排序。 它应该在 Cassandra 中完成,我必须执行以下两个查询:
select Student_ID, Course_Name from table where mark='A'
和
select Student_ID, max(Price_Paid) from table group by student_id
我尝试按如下方式定义 table 但它不适用于第二个查询:
CREATE TABLE table_students(
Course Name text,
Price Paid int,
nombre_profesor text,
id_estudiante int,
Mark text,
primary key(Mark, Price Paid, Course Name, Student_ID));
第一个查询有效,但是当我尝试 运行 第二个查询时,一条消息表明支付的价格不应在 Student_ID 出现之前。如果我在两者之间切换顺序,table 排序不正确。
非常感谢您的支持
不要试图用一个 table 来完成它 - Cassandra 的数据建模规则说 - 一个查询,一个 table。所以如果你想按 student_id
聚合,你需要将它作为分区键。用主键创建一个 table 像这样 (student_id, course_name)
.
我建议阅读 this free book(Cassandra。权威指南,第 3 版)的第一章
P.S。此外,将 Mark
作为分区键不是很好 - 它的可能值太少,因此大分区的数量非常有限。相反,您可以向其中添加一些内容,例如年份或类似...