我很困惑。 何时使用它们以及如何确定使用哪一个? 如果列是索引/主键/行键,是否可以重复?
我想创建一个列系列来存储一些多对多信息,例如,一列是给定名称,另一列是姓氏。一个给定的名字可以与许多姓氏相关,一个姓氏可以有不同的名字。
我需要按给定的名称查询姓氏,并按指定的姓氏查询给定的姓名。
如何创建表格?
谢谢!
答案 0 :(得分:1)
Cassandra是一个NoSQL数据库,因此没有这种多对多关系的概念。理想情况下,表不应包含主键以外的任何内容。在您的情况下,在Cassandra中建模的正确方法是创建两个表,一个名称作为主键,另一个名称作为主键
当您需要按任一键查询时,您需要查询具有该键的表作为主键
编辑: 来自Cassandra文档:
Cassandra的内置索引最适合拥有多行的表 包含索引值。 a中存在的唯一值越多 特别是专栏,平均而言,您的开销会增加 查询并维护索引。例如,假设您参加了比赛 在数百场比赛中,有数十亿参赛选手参加自行车比赛 想骑自行车的人查找排名。许多骑车者'排名将分享 比赛年份的相同列值。 race_year专栏是一个很好的 索引的候选人。
在这些情况下不要使用索引:
- 在高基数列上,查询少量结果的大量记录。
- 在使用计数器列的表中经常更新或删除的列。
- 要在大分区中查找行,除非进行狭义查询。