Cassandra中的分区键列

时间:2015-05-07 12:32:26

标签: cassandra cql datastax datastax-enterprise cql3

如果我决定采用以下策略进行分区

,我想了解究竟是什么会提高我的表现

让我们说我有一个歌曲表,我想将艺术家定义为分区键。这张桌子会逐渐增长。今天我有25位艺术家和5首歌曲,分别为25位艺术家(总共125行)。但是在一段时间里,我预计会有500位艺术家和每位艺术家的5首歌曲(总共2500首)。我想将艺术家ID作为分区键,因为在CQL中需要在where子句中提及分区键,在我的ui中这是我可以显示这5首歌曲的唯一值。

此外,如果我今天开始使用2个cassandra节点并最终增长到4个节点然后再增加10个节点。我可以继续拥有与成长相同的分区键吗?

这是我的表结构:

ArtistId (partition key)  |  SongId  |  Song
--------------------------------------------
1                         | 1        |  abc
1                         | 2        |  cde
1                         | 3        |  fgh
2                         | 4        |  ijk
2                         | 5        |  lmn
1                         | 6        |  opq
1                         | 7        |  rst

1 个答案:

答案 0 :(得分:3)

  

此外,如果我今天开始使用2个cassandra节点并最终增长到4个节点然后再增加10个节点。我可以继续拥有与成长相同的分区键吗?

是的,您可以保留分区密钥。

  

如果我决定采用以下策略进行分区

,我想了解究竟是什么会提高我的表现

当复合可以有分区键和聚类键时,澄清主键可以是单个列,也可以是复合键。

因为你说艺术家的分区键,这将是你的行键,我假设歌曲将是你的群集键。

分区键用于跨不同节点分布,群集键按存储顺序分配。

根据cql documentation

  

共享相同分区键的所有行(实际上甚至跨表)都存储在同一物理节点上

搜索效率非常高,因为并不需要在所有节点上达到法定人数,而是会更快地找到它们。