3

我有一个关于如何通过 CQLEngine 在 Cassandra 中创建无价值列的问题。我的意思是我想出于某种目的将信息存储在列名而不是列值中。但是在 CqlEngine 中,您应该在模型文件中运行项目之前定义列名。谢谢你的帮助。

4

2 回答 2

0

好的,首先我需要像这样定义我的列族:create table test(user text, itemLiked text, primary key (user,itemLiked))

所以用户是行键,itemLiked 是聚类键。如果我向这个 cf 插入值,cassannad 不会为此创建行(内部),并且 itemliked 值将是插入到 test(user , itemLiked) 值(“user1”,“Item1”)中的列的名称;插入测试(用户,itemLiked)值(“user1”,“Item1”);

因此,cassandra 将为 rowkey user1 创建名为 Item1 和 Item2 的两列,这些列没有任何值,如本文所述: http ://cassandra.apache.org/doc/cql3/CQL.html 符合以下条件: 此外,一个表必须定义至少一个不属于 PRIMARY KEY 的列,因为 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 回答