我有一个关于如何通过CQLEngine在Cassandra中创建无价值列的问题。我的意思是我希望商店信息以列名而不是列值出于某种目的。 但是在CqlEngine中,您应该在模型文件中运行项目之前定义列名。 谢谢你的帮助。
答案 0 :(得分: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
答案 1 :(得分:0)
好的,首先我需要像这样定义我的列族: 创建表测试( 用户文字, itemLiked文字, 主键(user,itemLiked))
因此用户是行键,而itemLiked是群集键。 如果我向此cf插入值,cassanndra不会为此创建行(内部) itemliked值将是列的名称 插入test(user,itemLiked)值(“user1”,“Item1”); 插入test(user,itemLiked)值(“user1”,“Item1”);
因此cassandra将为rowkey user1创建两个名为Item1和Item2的列 这列没有任何值,如本文所述: http://cassandra.apache.org/doc/cql3/CQL.html 符合: 此外,一个表必须至少定义一个不属于PRIMARY KEY的列,因为Cassandra中只有一行包含至少一个这样的列的值。