cassandra中的行键,主键和索引之间有什么区别?

时间:2016-03-02 08:17:54

标签: cassandra

我很困惑。 何时使用它们以及如何确定使用哪一个? 如果列是索引/主键/行键,是否可以重复?

我想创建一个列系列来存储一些多对多信息,例如,一列是给定名称,另一列是姓氏。一个给定的名字可以与许多姓氏相关,一个姓氏可以有不同的名字。

我需要按给定的名称查询姓氏,并按指定的姓氏查询给定的姓名。

如何创建表格?

谢谢!

1 个答案:

答案 0 :(得分:1)

Cassandra是一个NoSQL数据库,因此没有这种多对多关系的概念。理想情况下,表不应包含主键以外的任何内容。在您的情况下,在Cassandra中建模的正确方法是创建两个表,一个名称作为主键,另一个名称作为主键

当您需要按任一键查询时,您需要查询具有该键的表作为主键

编辑: 来自Cassandra文档:

  

Cassandra的内置索引最适合拥有多行的表   包含索引值。 a中存在的唯一值越多   特别是专栏,平均而言,您的开销会增加   查询并维护索引。例如,假设您参加了比赛   在数百场比赛中,有数十亿参赛选手参加自行车比赛   想骑自行车的人查找排名。许多骑车者'排名将分享   比赛年份的相同列值。 race_year专栏是一个很好的   索引的候选人。

     

在这些情况下不要使用索引:

     
      
  • 在高基数列上,查询少量结果的大量记录。
  •   
  • 在使用计数器列的表中经常更新或删除的列。
  •   
  • 要在大分区中查找行,除非进行狭义查询。
  •