This article讨论了在Cassandra 1.1中使用CQL 3创建复合列的可能方法。他们只是想法。没有什么是正式的,Datastax文档没有涵盖这个(只有复合键)。
据我了解,复合列是多个列,它们只有一个值。
如何使用CQL创建它们?
修改
我将使用C#连接到Cassandra。 CQL看起来很简单,这就是我想使用它的原因。
答案 0 :(得分:4)
我认为你有一些困惑的概念。很可能这是Datastax文档的错误;如果你有更好的建议,在你有更好的照片后让它更清晰,我会很高兴发送它们。
Datastax docs 中的“复合键”内容实际上是在讨论复合Cassandra列。混淆的原因是CQL 3中的行不直接映射到存储引擎行(使用thrift接口时使用的是什么)。 CQL表上下文中的“复合键”仅表示由多列组成的主键,由存储层的复合列实现。
This article是关于映射如何发生以及为什么CQL模型通常更容易思考的更好解释之一。
通过这种用法,第一个CQL列成为存储引擎分区密钥。
从Cassandra 1.2(开发中)开始,也可以使用CQL创建复合存储引擎密钥,方法是在将存储在分区密钥中的CQL列的PRIMARY KEY定义中添加额外的括号(请参阅{{3 }},但这可能是例外,而不是规则。
答案 1 :(得分:2)
使用Cassandra,您可以将数据存储在行中。每行都有一个行键和一些列。每列都有一个名称和一个值。通常,列名和值(以及行键)是单个值(int,long,UTF8等),但您可以在行键,列名和列值中使用复合值。复合值只是以某种方式序列化在一起的一些值。
随着时间的推移,已经开发了许多特定于语言的API。这些API从我上面描述的理解开始,并相应地提供对列族的访问。 Hector,java客户端API,是我最熟悉的,但还有其他人。
引入CQL作为以SQL / JDBC方式使用Cassandra表的方法。虽然随着时间的推移CQL越来越多,但并不是所有的Cassandra功能都是通过CQL支持的。
我不怀疑你需要复合列名称和值(我相信这是你的要求)。问题是CQL尚未发展(据我所知)到该级别的本机支持。我不知道它是否会被人知道。
我建议您完成所需列族模式的定义,必要时填写复合值。完成后,查看可用于访问Cassandra列族的各种API,并选择最适合您所需模式的API。
您还没有说过您正在使用的语言。如果您使用java进行编码,那么我建议使用Hector而不是CQL。
答案 2 :(得分:0)
您确定要使用CQL创建它们吗?你的用例是什么?