我有一个关于如何通过CQLEngine在Cassandra中创建无价值的列的问题。我的意思是,出于某种目的,我希望将信息存储在列名中,而不是列值中。但在CqlEngine中,您应该在模型文件中运行项目之前定义列名。谢谢你的帮助。
发布于 2013-07-24 05:02:58
传统上,您所询问的内容将使用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-31 22:40:11
好的,首先我需要这样定义我的列族: create table test( user text,itemLiked text,主键(user,itemLiked))
因此,用户是行键,而itemLiked是聚类键。如果我向这个cf插入值,cassanndra不会(在内部)为它创建行,而itemliked值将是插入到测试(user,itemLiked)值( "user1",“Item1”)中的列的名称;插入到测试(user,itemLiked)值( "user1",“Item1”)中的列的名称;
因此,cassandra将为row KEY user1创建两个名为Item1和Item2的列。此列没有任何值,如本文所述:http://cassandra.apache.org/doc/cql3/CQL.html in line:此外,表必须定义至少一列不是主键的一部分,因为只有当一行包含至少一个这样的列的值时,才存在于Cassandra中。
https://stackoverflow.com/questions/17775648
复制相似问题