私は次の用語に出くわします:high cardinality
とlow cardinality
でCassandra
.
それらが何を意味するのか正確にはわかりません。それらがクエリに与える影響と優先されるもの。わかりやすいので例を挙げて説明してください。
私は次の用語に出くわします:high cardinality
とlow cardinality
でCassandra
.
それらが何を意味するのか正確にはわかりません。それらがクエリに与える影響と優先されるもの。わかりやすいので例を挙げて説明してください。
X のカーディナリティは、X を構成する要素の数にすぎません。Cassandra では、パーティション キーのカーディナリティは、データを分割するために非常に重要です。
パーティション キーはクラスター全体でのデータの分散を担当するため、低いカーディナリティ キーを選択すると、データが分散されない状況につながる可能性があります。
コメントを格納する20個のノードのクラスターがあるとします。RF は2です。各コメントには、1 から 5 までの独自の投票があります。ここで、投票によってコメントを簡単に取得したいので、パーティション キーとして投票を選択したくなるかもしれません。
CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));
この状況では、データ配布を担当する唯一のキーは投票であり、5 つの値 (1、2、3、4、5) しか含めることができないため、カーディナリティが非常に低くなります。これは、最良の状況では、 5 つの異なるノードが 5 つの異なるパーティション (「投票 1 のすべてのコメント」...「投票 5 のすべてのコメント」) の所有者になることを意味します。 2 つの RF、10 の異なるノードがデータを保持します。ご覧のとおり、最適な状況で 50% 以上使用されていない 20 ノードのクラスターがあります。
データ分散は非常に重要です。そのため、パーティション キーのカーディナリティが非常に重要です
HTH、カルロ