如果我决定采用以下策略进行分区
,我想了解究竟是什么会提高我的表现让我们说我有一个歌曲表,我想将艺术家定义为分区键。这张桌子会逐渐增长。今天我有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
答案 0 :(得分:3)
此外,如果我今天开始使用2个cassandra节点并最终增长到4个节点然后再增加10个节点。我可以继续拥有与成长相同的分区键吗?
是的,您可以保留分区密钥。
如果我决定采用以下策略进行分区
,我想了解究竟是什么会提高我的表现
当复合可以有分区键和聚类键时,澄清主键可以是单个列,也可以是复合键。
因为你说艺术家的分区键,这将是你的行键,我假设歌曲将是你的群集键。
分区键用于跨不同节点分布,群集键按存储顺序分配。
共享相同分区键的所有行(实际上甚至跨表)都存储在同一物理节点上
搜索效率非常高,因为并不需要在所有节点上达到法定人数,而是会更快地找到它们。