复合分区键 - 行搜索 VS。列搜索

composite partition key - row searching VS. column searching

我的查询是获取特定学生在特定考试中的分数。对于 Cassandra table 设计,选项 1,

 CREATE TABLE student_score (
  student_name text,
  exam_name text,
  score int,
  exam_time timeuuid
  PRIMARY KEY (exam_name,student_name)
 )
 WITH CLUSTERING ORDER BY (student_name DESC);

exam_name 将作为分区键,所有学生都在宽行中。

选项 2,

 CREATE TABLE student_score (
  student_name text,
  exam_name text,
  score int,
  exam_time timeuuid
  PRIMARY KEY ((exam_name,student_name))
 )

exam_name和student_name一起构成partition key,所以没有宽行。

选项 1 是标准方式。但是选项 2 有什么问题呢?

选项2没有问题,但选项2只能同时使用exam_name和student_name进行查询。

如果更多学生参加特定考试,选项一将面临数据分配问题,即数据将不会平均分配。

如果同一考试中出现多个同名学生,这两种方法都会遇到问题。