【问题标题】:Create table in Cassandra. Order by在 Cassandra 中创建表。订购方式
【发布时间】:2021-04-05 08:14:45
【问题描述】:

我正在创建一个包含以下列的表格:

  • 马克
  • 课程名称
  • 大学
  • Student_ID
  • 付出的代价

表格应按标记排序。 它应该在 Cassandra 中完成,我必须实现以下两个查询:

select Student_ID, Course_Name from table where mark='A'

select Student_ID, max(Price_Paid) from table group by student_id

我尝试如下定义表,但它不适用于第二个查询:

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 出现之前。如果我在两者之间切换顺序,则表格未正确排序。

非常感谢您的支持

【问题讨论】:

    标签: cassandra nosql


    【解决方案1】:

    不要试图用一张表来完成它——Cassandra 的数据建模规则说——一张查询,一张表。所以如果你想通过student_id聚合,你需要把它作为分区键。创建一个主键类似于 (student_id, course_name) 的表。

    我推荐阅读this free book (Cassandra. The Definitive Guide, 3rd edition) 的第一章

    附:此外,将Mark 作为分区键也不是很好——它的可能值太少,因此大分区的数量非常有限。相反,您可以向其中添加一些内容,例如年份或类似...

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 2012-08-18
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2021-09-02
      • 2019-01-16
      • 2019-04-10
      相关资源
      最近更新 更多