2017-03-08 71 views
0

我需要使用Cassandra的存储倒排索引,其中单词及其制品频率存储如下:卡桑德拉分区,集群键来存储倒排索引

word, article_title, frequency 

的独特单词数约为40M和Cassandra节点的数量= 2。 将单词的第一个字符用作分区键或单词本身会更好吗? 主键是什么?

+0

很难说如果不知道表将服务的查询。 – Aaron

+0

查询会是这样的:select * from inverted_index(word1,word2,...)中的哪个单词; –

+0

你看过sasi索引吗? –

回答

0

TL; DR:关于您的查询,我肯定会说使用这个词作为分区键。

如果你只使用第一个字符,你将只有26个分区。你不想要这个,如果有的话,你会得到热点。有些行会非常短,因为从特定字母开始的单词不会很多,而其他行将会非常长,甚至可能超出其使用的性能。是的,Cassandra每行限制数量为20亿列,但建议将行数保持在数百万。如果只想'AIRPORT',您也不想访问以'A'开头的所有单词。

您需要尽可能多的随机性分区密钥,以便行可以轻松分散到整个集群中。另一方面,它必须反映您的访问模式。就你而言,你不会看到一个单词或一组单词的统计信息。通过分区/主进行访问基本上和使用Cassandra一样快。

至于聚类键,它或多或少是显而易见的,你可以使用文章标题,或者,我会做的实际上是使用文章标识符(一个UUID或类似的)作为集群键。文章标题可能会改变(打字错误?),你肯定不想遍历你的所有行改变标题。