Cassandra Wikiでは、パーティションごとに2 billion cells (rows x columns)
の制限があると言われています。しかし、パーティションが何であるかは不明です。
列ファミリーごとにノードごとに1つのパーティションがありますか?つまり、列ファミリーの最大サイズは2 billion cells * number of nodes
クラスター内。
または、Cassandraは、列ファミリーのすべてのデータを格納するために必要なだけのパーティションを作成しますか?
私は新しいプロジェクトを始めているので、Cassandra 2.0を使用します。
CQL3の登場により、用語は古い古着用語からわずかに変更されました。
基本的に
Create Table foo (a int , b int, c int, d int, PRIMARY KEY ((a,b),c))
CQL3テーブルを作成します。 aとbの情報は、パーティションキーを作成するために使用されます。これは、情報が存在するノードを示します。これは、20億セルの限界で話題になっている「分断」です。
そのパーティション内では、情報はクラスタリングキーと呼ばれるcで編成されます。 a、b、cを組み合わせて、dの一意の値を定義します。この場合、パーティション内のセルの数はc * dになります。したがって、この例では、aとbの特定のペアについて、cとdの組み合わせは20億個しかありません。
したがって、データをモデル化するときに、データがCassandra全体にランダムに分散されるように、主キーが変化することを確認する必要があります。次に、クラスタリングキーを使用して、データが希望どおりに利用できることを確認します。
cassandra The Datamodel is Dead、Long live the datamodel のDatmodelingの詳細については、このビデオをご覧ください
Create Table foo (a int , b int, c int, d int, e int, f int, PRIMARY KEY ((a,b),c,d))
パーティションは、aとbの組み合わせによって一意に識別されます。
パーティション内では、cとdを使用してパーティション内のセルを並べ替えるため、レイアウトは次のようになります。
(a1,b1) --> [c1,d1 : e1], [c1,d1 :f1], [c1,d2 : e2] ....
したがって、この例では、20億個のセルを持つことができ、各セルには以下が含まれます。
したがって、20億の制限は、(c,d,e)
と(c,d,f)
の一意のタプルの合計を指します。
差出人: http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html
複合パーティションキーの使用¶
複合パーティションキーは、複数の列で構成されるパーティションキーです。括弧の追加セットを使用して、複合パーティションキーを構成する列を囲みます。主キー定義内で、ネストされた括弧の外側の列は、クラスタリング列です。これらの列は、パーティション内で論理セットを形成して、検索を容易にします。
CREATE TABLE Cats (
block_id uuid,
breed text,
color text,
short_hair boolean,
PRIMARY KEY ((block_id, breed), color, short_hair)
);
たとえば、複合パーティションキーはblock_idとブリードで構成されます。クラスタリング列、colorおよびshort_hairは、データのクラスタリングの順序を決定します。一般に、Cassandraは、同じblock_idを持つが異なるノードで異なるブリードを持つ列と、同じblock_idを持つ列と同じノードでブリードを格納します。
==>パーティションはレプリケーションの最小単位です(それ自体はsh **には意味がありません。:))
==> block_idと品種のすべての組み合わせはaPartitionです。
==>クラスタ内の任意のマシンでは、同じパーティションキーを持つ行がすべてまたは存在しません。