2016-04-18 7 views
0

問題は、Cassandraがクラスタごとに多数のテーブル(> 1000)を処理できないことです。私はテーブルの数を減らすための手段を探していました。そのうちの1つは、同じ構造を共有する複数のテーブルをgetherにグループ化していました。カッサンドラで複数のテーブルをまとめて賛否両論はありますか?

create table Shared (
    original_table_name text, // either 'A' or 'B' 
    key text, 
    value text, 
    primary key(original_table_name, key) 
) 

1つの以上のパーティションのキーを追加することにより、グループ一緒に、我々は2台 B

create table A (
    key text, 
    value text, 
    primary key(key) 
) 

create table B (
    key text, 
    value text, 
    primary key(key) 
) 

を持っている場合我々はできるとしましょう

My questio nは、それは良いパターンであり、このようにデータをモデル化することの結果は何ですか?

答えて

0

私たちのプロダクションは50以上のテーブルで動作しているため、何か問題はないと思います。

とにかく、あなたのアプリケーションがテーブルのatlotを使用している場合、その可能性が最も高いのは正規化されたテーブルです。 cassandraでは、結合機能がないため、常に非正規化テーブルを作成する必要があります。カサンドラは非常に速い書き込みのために作られているので、あなたはそれを信じることができ、心配する必要はありません。

新しいデザインに関しては何の問題もありません。パーティションキーはtable_nameだけでなく(table_name、key)の組み合わせでなければならないので、ノード間で均等に分散されます。 そして、毎回クエリを行うには、table_name + keyを指定する必要があります。

+0

質問が更新されました。私たちは複数のアプリケーションをホスティングしているので、私は1000以上のテーブルを扱っています(非正規化はここではっきりと役割を果たす)。この質問に対する動機付けは、テーブルの数を減らして、ホストするために余分なクラスタを増やす必要がないようにすることです。 –

関連する問題