我需要使用Cassandra来存储倒置索引,其中文章中的单词及其频率存储如下:
word, article_title, frequency
唯一字数约为40M,Cassandra节点数= 2。 哪个更好地使用单词的第一个字符作为分区键或单词本身? 主键怎么样?
答案 0 :(得分:0)
TL; DR:关于你的查询,我肯定会说使用这个词作为分区键。
如果您只使用第一个字符,则只有26个分区。你不希望这样,如果有的话,你会得到热点。有些行会很短,因为没有很多单词以特定的字母开头,而其他行则非常非常长,甚至可能超出了它的高效性。是的,Cassandra每行限制20亿列,但建议将行的大小保持在数百万。如果您只想要'AIRPORT',您也不想访问以'A'开头的所有单词。
你需要一个高度的狂欢,尽可能随机,分区键,以便行很容易分散在整个集群中。另一方面,它必须反映您的访问模式。在你的情况下,你不会看到一个单词或一组单词的统计数据。通过分区/主要访问基本上与使用Cassandra一样快。
至于群集密钥,它或多或少是显而易见的,您可以使用文章标题,或者,我要做的是实际使用文章标识符(UUID等)作为群集密钥。文章标题可能会改变(拼写错误?),你当然不希望迭代所有行改变标题。