3

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

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

您如何使用 CQL 创建它们?

编辑

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

4

3 回答 3

4

我想你有几个概念混淆了。这很可能是 Datastax 文档的错误;如果您有任何好的建议可以在您获得更好的图片后使其更清晰,我很乐意将它们发送出去。

Datastax 文档中的“复合键”实际上是在谈论复合 Cassandra 列。造成混淆的原因是 CQL 3 中的行不直接映射到存储引擎行(使用 thrift 接口时使用的内容)。CQL表上下文中的“复合键”只是指由多个列组成的主键,由存储层的复合列实现。

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

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

从 Cassandra 1.2(开发中)开始,还可以使用 CQL 创建复合存储引擎键,方法是在将存储在分区键中的 CQL 列周围的 PRIMARY KEY 定义中放置额外的括号(请参阅CASSANDRA-4179),但是这可能是例外,而不是规则。

于 2012-09-10T05:41:11.153 回答
2

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

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

引入 CQL 是作为一种以 SQL/JDBC 方式使用 Cassandra 表的方法。起初,并非所有 Cassandra 功能都通过 CQL 得到支持,尽管随着时间的推移 CQL 变得越来越实用。

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

我建议您完成所需列族模式的定义,并在必要时使用复合值。完成此操作后,请查看可用于访问 Cassandra 列族的各种 API,并选择最能支持所需架构的 API。

你还没有说你使用的是什么语言。如果您使用 Java 进行编码,那么我会推荐 Hector 而不是 CQL。

于 2012-09-09T15:23:53.190 回答
0

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

于 2012-09-09T13:53:00.910 回答