3

CQLEngine を使用して Cassandra で値のない列を作成する方法について質問があります。なんらかの目的で、列の値ではなく列名に情報を格納したいということです。ただし、CqlEngine では、モデル ファイルでプロジェクトを実行する前に、列名を定義する必要があります。助けてくれてありがとう。

4

2 に答える 2

0

まず、列ファミリーを次のように定義する必要があります: create table test( user text, itemLiked text, primary key (user,itemLiked))

したがって、ユーザーは行キーで、itemLiked はクラスタリング キーです。この cf に値を挿入すると、cassanndra はそのための行を (内部的に) 作成せず、itemliked 値は列の名前になり、 test(user , itemLiked) 値 ( "user1","Item1"); に挿入されます。test(user , itemLiked) 値 ( "user1","Item1") に挿入します。

そのため、cassandra は行キー user1 に対して Item1 と Item2 という名前の 2 つの列を作成します。この列には値がなく、この記事で説明されているよう : http://cassandra.apache.org/doc/cql3/CQL.htmlテーブルは、PRIMARY KEY の一部ではない列を少なくとも 1 つ定義する必要があります。これは、そのような列の 1 つに少なくとも 1 つの値が含まれている場合にのみ行が Cassandra に存在するためです。

于 2013-07-31T14:40:11.060 に答える
0

あなたが求めていることは、従来、独自の列名を定義して、Thrift API と幅の広い行を使用して達成されていました。これは CQL3 の仕組みではありません。この方法で作業したい場合は、pycassa を使用するか、複合キーを使用して列を作成できます。

たとえば、CQL3 の場合:

create table ratings ( user_id uuid, item_id uuid, rating int, primary key (user_id, item_id));

実際には、user_id をキーとして幅の広い行を作成します。列には item_id があり、評価が値になります。複合主キーを使用すると、行が列に転置されます。

これを読みたいかもしれません: http://brianoneill.blogspot.com/2012/09/composite-keys-connecting-dots-between.html

于 2013-07-23T21:02:57.797 に答える