2016-03-27 12 views
0

古いバージョンのCassandraを使用すると、特別な列の列を使用して、独自のソート済み行を作成することが予想されました。これは、列がCassandraでソートされて保存されるためです。Cassandraの列は、ノードを1つだけ使用してソートされますか?

PRIMARY KEYを作成するときに同じ概念を使用しているCassのCassandra 3.0はありますか?

言って、例えば、私はそうのような表を作成すること:

CREATE TABLE my_table (
    created_on timestamp, 
    ..., 
    PRIMARY KEY (created_on) 
); 

は、その後、私はそうのようなさまざまなエントリを追加します。

INSERT INTO my_table (created_on, ...) VALUES (1, ...); 
... 
INSERT INTO my_table (created_on, ...) VALUES (9, ...); 

がどのようカサンドラはPRIMARY KEYにソートを管理していますか?それはすべてのノードで起こりますか、または1つだけのセットで起こりますか(私がセットと呼ぶのはレプリケートの数です。したがって、レプリケーションファクタが4の100ノードのクラスタを持つ場合、プライマリキーは100ノード、またはちょうど4?旧バージョンでは、4つのノードにしかありません)

+1

これはあなたの質問に答える必要があります:http://www.planetcassandra.org/blog/we-shall-have-order/ –

答えて

2

あなたの場合、主キーは行キーであったパーティションキーです。つまり、レプリケーションファクタが4に設定されている場合、挿入するデータは100ノードのうち4ノードに存在します。

CQLでは、クラスタリングキーと呼ばれる主キーに列を追加できます。 CQLを使用してC *にクエリを実行すると、結果セットにパーティションキー用の複数の行が含まれることがあります。これらの行は論理的であり、パーティションのキーを共有するパーティションに格納されます(ただし、クラスタリングのキー値は異なります)。これらの論理行のデータは、パーティションが複製されるときに複製されます。

CREATE TABLEステートメントの公式ドキュメントで、可能な主キーの例を見てください。

EDITは(行が並べ替え):

C *は、そのパーティションのキー値ハッシュコードの順にテーブルのパーティションを保持します。そのための順序はそれほど単純ではなく、パーティションキー値による範囲照会の結果は、期待するものではありません。しかし、パーティションが実際に注文されているので、token functionの助けを借りてサーバー側のページ付けを行うことができます。 つまり、ByteOrderedPartitionerを使ってパーティションの字句順を整えることができます。しかし、そのパーティショナーを使用してホットスポットを作成するのは非常に簡単で、通常は使用することをお勧めします。

特定のパーティションの行は、クラスタ化キーの実際の値によって順序付けられます。それらの範囲クエリは、期待通りに動作します。

+0

SQLから来て、PRIMARY KEYと表示されているのは、カサンドラ、いいえ、分割キーではありません。 –

+1

@AlexisWilke、行はパーティションキーで並べ替えられます。私の更新された答えを見てください。 – Ralf

関連する問題