0

hector APIを使用してcassandraに次の形式の行を挿入することは可能ですか:

rowkey1 ==>     "Column name1":{"item1","item2","item3"}
                "Column name2":{"item11","item22","item33"}
                "Column name3":{"item111","item222","item333"}

rowkey2 ==>     "Column name1-a":{"item1","item2","item3"}
                "Column name2-b":{"item11","item22","item33"}
                "Column name3-c":{"item111","item222","item333"}

つまり、各列は以下で構成されます: column_name、複数の列値ie 列は列名で構成され、その値は {'item title','item price','about item'} のような複数のもので構成されます。列名と種類の列値は動的であり、異なる行には、異なる数と異なる種類の値を持つ異なる列が含まれる場合があります。

私は次のようなことを考えていました.列名は文字列になり、列値は必要なプロパティを持つクラスオブジェクトになります. いいですか?背後にある考え方は、すべてが同じ列に含まれ、列への単一の呼び出しですべての複数の値が得られるということです。複数の列を使用すると、複数の列を読み取る作業が増える可能性があります。

私が思うように、記録の編集と読み取りは問題にならないはずです。列は動的であるため、CQL ではなくヘクター コア API を使用しています。

提案や解決策はありますか??

4

2 に答える 2

0

定義上、Cassandra はキーと値のデータベースであるため、探しているモデルは Cassandra の哲学に適合しません。列名は一意である必要があるため、作成した場合:

create columnfamily demo WITH comparator = UTF8Type AND key_validation_class = UTF8Type AND default_validation_class=UTF8Type;
 set demo['1']['column1'] = 'value';
 set demo['1']['column1'] = 'value2';

get を実行すると:

 GET demo['1'];
=> (column=column1, value=value2, timestamp=1373438507059000)

同じ構造を持つ 2 つの列ファミリーを作成することをお勧めします。これにより、両方の列ファミリーで同じ列名を使用できますが、それぞれに異なる列値を格納できます。このアプローチでは、列を個別に編集できます。

于 2013-07-10T06:47:23.017 に答える