Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储反向索引的Cassandra分区和集群键_Cassandra_Inverted Index - Fatal编程技术网

存储反向索引的Cassandra分区和集群键

存储反向索引的Cassandra分区和集群键,cassandra,inverted-index,Cassandra,Inverted Index,我需要使用Cassandra存储一个倒排索引,其中单词及其在文章中的频率存储如下: word, article_title, frequency 唯一字数约为40M,Cassandra节点数=2。 使用单词的第一个字符作为分区键或单词本身哪个更好? 主键呢?TL;DR:关于你的查询,我肯定会说使用这个词作为分区键 如果只使用第一个字符,则只有26个分区。你不想这样,如果还有别的,你会成为热点。有些行会很短,因为没有太多以特定字母开头的单词,而另一些行会非常、非常长,甚至可能超出了使用的范围。是

我需要使用Cassandra存储一个倒排索引,其中单词及其在文章中的频率存储如下:

word, article_title, frequency
唯一字数约为40M,Cassandra节点数=2。 使用单词的第一个字符作为分区键或单词本身哪个更好?
主键呢?

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

如果只使用第一个字符,则只有26个分区。你不想这样,如果还有别的,你会成为热点。有些行会很短,因为没有太多以特定字母开头的单词,而另一些行会非常、非常长,甚至可能超出了使用的范围。是的,Cassandra有一个每行20亿列的限制,但建议将行的大小保持在数百万。如果您只想访问“AIRPORT”,您也不想访问所有以“A”开头的单词

您需要一个尽可能随机的高质量分区键,以便这些行可以轻松地分散在整个集群中。另一方面,它必须反映您的访问模式。在你的情况下,你不想看到一个单词或一组单词的统计数据。通过分区/主分区进行访问基本上与使用Cassandra时一样快


至于集群密钥,这或多或少是显而易见的,您可以使用文章标题,或者,我要做的是实际使用一个文章标识符(UUID之类的)作为集群密钥。文章标题可能会更改(打字错误?),您当然不想在所有行中重复更改标题

如果不知道该表将提供的查询,很难说。查询如下:从反向索引中选择*哪个单词(word1,word2,…);你看过sasi索引了吗?我刚看过。实际上我不认为我需要创建索引