2012-03-30 13 views
-1

Hector APIを使用してCassandraにネストされたスーパーカラム(スーパーカラムにスーパーカラムを意味する)を挿入する方法を教えてください。以下は単純なスーパーカラムのコードですが、うまくいきます。しかし、私はこれに1つのスーパーカラムを追加したい。ネストされたスーパーカラムを挿入する

Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, stringSerializer); 
List<HColumn<String,String>> colsList = new ArrayList<HColumn<String,String>>(); 
colsList.add(HFactory.createStringColumn("name", "tarun")); 
colsList.add(HFactory.createStringColumn("age", "25")); 
mutator.insert("deviceId", CF_SUPER, HFactory.createSuperColumn("10000", 
       colsList,stringSerializer, stringSerializer, stringSerializer)); 

答えて

1

スーパーカラムを別のスーパーカラムに入れることはできません。スーパーカラムのコレクションを保持するSuperColumnFamilyを使用する必要があります。 DiggでCassandraを設定してデータモデルの良い説明をしてくれた人の1人が、thisの素晴らしい記事を参照してください。

+0

私はすでにこの記事を読んで、スーパーカラムを別のものに入れることができることを知っています。しかし、私はCassandraのためのHector Java APIを通してこれをしたいと思います。 –

+0

ヘクターを使ってスーパーカラムファミリを追加する方法をご存じですか? –

+0

私はHectorライブラリに精通していません - 私はPelopsを使用していますが、それはちょっと難しいと思っています - しかし、データモデルを事前に定義してColumn FamiliesとSuper列ファミリを作成することをお勧めしますシステムを起動します。私は個人的には、APIを実行しようとするのではなく、そのためのスクリプトとコマンドラインを好みます。アクセスの問題をデータモデルの懸念から分離し、保守性を向上させます。 – FloppyDisk

3

カッサンドラの別のスーパーカラムの中にスーパーカラムを置くことはできません。これはHectorの制限ではなく、これはCassandraの実装方法です。

私がCassandraを初めて使用したとき、私は何時間もデータモデルのテキストの説明を読んでいました。私の目は曇っていて、私はそれを手に入れませんでした。それから私は絵の表現を見て、それを直ちにgrokked。それをチェックしてください:http://www.javageneration.com/wp-content/uploads/2010/05/Cassandra_DataModel_CheatSheet.pdf

+0

cassandraデータモードの詳細については、次のリンクをご覧ください。 http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model –

+1

あなた自身のリンクから: "A SuperColumnは、バイナリ名と無制限の値を含むマップのタプルです列の数 - 列の名前をキーとします。 " 元の質問に答えるには、スーパーカラムを別のスーパーカラムに入れることはできません。カッサンドラはそれをしませんので、もちろんヘクターもそれをしません。 –

関連する問題