使用CQL 3创建复合COLUMNS(而不是键)

本文讨论了CQL 3可用于在Cassandra 1.1中创建复合列的可能方法。 他们只是想法。 没有什么是官方的,Datastax文档没有涵盖这个(只有复合键)。

据我了解,复合列是多个列,它们只有一个值。

你如何用CQL创建它们?

编辑

我将使用C#连接到Cassandra。 CQL看起来很简单,这就是我想使用它的原因。

我想,你有一些困惑的概念。 很可能这是Datastax文档的错误; 如果你有一个很好的建议,让你有一个更好的图片后更清楚,我会很高兴发送给他们。

Datastax docs中的“复合键”实际上是在讨论复合Cassandra列。 混淆的原因是CQL 3中的行不直接映射到存储引擎行(当您使用thrift接口时使用的是什么)。 CQL表上下文中的“复合键”仅表示由多个列组成的主键,该列由存储层上的复合列实现

本文是关于映射如何发生以及为什么CQL模型通常更容易思考的更好解释之一。

通过这种使用,第一个CQL列成为存储引擎分区键。

从Cassandra 1.2(开发中)开始,也可以使用CQL创建复合存储引擎密钥,方法是在将存储在分区密钥中的CQL列的PRIMARY KEY定义中添加额外的括号(参见CASSANDRA-4179 ),但是这可能是例外,而不是规则。

使用Cassandra,您可以将数据存储在行中。 每行都有一个行键和一些列。 每列都有一个名称和一个值。 通常,列名和值(以及行键)是单个值(int,long,UTF8等),但您可以在行键,列名和列值中使用复合值。 复合值只是以某种方式序列化在一起的一些值。

随着时间的推移,已经开发了许多特定于语言的API。 这些API从我上面描述的理解开始,并相应地提供对列族的访问。 Hector,java客户端API,是我最熟悉的,但也有其他人。

引入CQL是一种以SQL / JDBC方式使用Cassandra表的方法。 虽然随着时间的推移CQL越来越多,但并不是所有的Cassandrafunction都是通过CQL支持的。

我不怀疑你需要复合列名称和值(我相信这是你要求的)。 问题是CQL尚未发展(据我所知)到该级别的本机支持。 我不知道它是否永远不会知道。

我建议您完成所需列族模式的定义,必要时填写复合值。 完成后,查看可用于访问Cassandra列族的各种API,并选择最适合您所需架构的API。

您还没有说过您正在使用的语言。 如果您使用java进行编码,那么我建议使用Hector而不是CQL。

您确定要使用CQL创建它们吗? 你的用例是什么?