web-dev-qa-db-ja.com

Cassandraには、パーティションごとに20億セルの制限がありますが、パーティションとは何ですか?

Cassandra Wikiでは、パーティションごとに2 billion cells (rows x columns)の制限があると言われています。しかし、パーティションが何であるかは不明です。

列ファミリーごとにノードごとに1つのパーティションがありますか?つまり、列ファミリーの最大サイズは2 billion cells * number of nodesクラスター内。

または、Cassandraは、列ファミリーのすべてのデータを格納するために必要なだけのパーティションを作成しますか?

私は新しいプロジェクトを始めているので、Cassandra 2.0を使用します。

33
Benoit Thiery

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の詳細については、このビデオをご覧ください

編集:コメントからのもう1つの例

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億個のセルを持つことができ、各セルには以下が含まれます。

  • Cの値
  • Dの値
  • Eまたはfのいずれかの値

したがって、20億の制限は、(c,d,e)(c,d,f)の一意のタプルの合計を指します。

61
RussS

差出人: 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です。

==>クラスタ内の任意のマシンでは、同じパーティションキーを持つ行がすべてまたは存在しません。

3
Ajeet Ganga