C# 使用CQL 3创建复合列(非键)

C# 使用CQL 3创建复合列(非键),c#,cassandra,composite,cql,C#,Cassandra,Composite,Cql,讨论在Cassandra 1.1中使用CQL 3创建复合柱的可能方式。它们只是想法。没有什么是官方的,Datastax文档也没有涵盖这一点(只有复合键) 据我所知,复合列是一系列只具有一个值的列 如何使用CQL创建它们 编辑 我将使用C#与Cassandra进行接口。CQL看起来使用起来很简单,这就是我想使用它的原因。您确定要使用CQL创建它们吗?您的用例是什么 使用Cassandra,可以按行存储数据。每行都有一个行键和一些列。每列都有一个名称和一个值。通常,列名和值(以及行键)是单个值(in

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

据我所知,复合列是一系列只具有一个值的列

如何使用CQL创建它们

编辑


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

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

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

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

CQL是作为一种以SQL/JDBC方式使用Cassandra表的方法引入的。起初并不是所有的卡桑德拉功能都是通过CQL支持的,尽管随着时间的推移,CQL的功能越来越强大

我不怀疑您需要复合列名和值(我相信这就是您所要求的)。问题是CQL还没有发展到(据我所知)本机支持的水平。我不知道它是否会发生

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


你还没说你在用什么语言。如果您是用java编写代码,那么我建议您使用Hector而不是CQL。

我想您可能混淆了一些概念。很可能这是税务文件的错误;如果你有什么好的建议,在你有一个更好的图片后,让它更清晰,我会很高兴地发送他们

Datastax文档中的“复合键”实际上是指复合Cassandra列。造成混淆的原因是CQL3中的行没有直接映射到存储引擎行(使用thrift接口时使用的)。CQL表上下文中的“复合键”仅指由多列组成的主键,该主键由存储层的复合列实现

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

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


在Cassandra 1.2(正在开发中)中,也可以使用CQL创建复合存储引擎键,方法是在主键定义中围绕将存储在分区键中的CQL列添加额外的括号(请参阅),但这可能是例外,而不是规则。

这是C#。好的,我会等到1.2版本,看看是否有更新。否则,我将不得不使用其他方法,至少在表创建过程中是这样;从1.1开始,CQL可以以比旧的和被破坏的thrift接口更强大、更简单的方式创建和处理复合密钥。截至1.2,节俭和CQL之间的差异正在扩大。对于任何新的Cassandra项目,您都应该使用CQL3,这一点非常明确。我在CQL中没有看到任何允许您在CQL表级别定义复合列名或复合列值的内容。您可以定义复合行键,但这不是问题所在。问题是如何在Cassandra中创建复合列,而不是如何在CQL表级别定义它们。没有任何理由在CQL表级别创建复合列;CQL3的全部意图是在高层次上转移对这种抽象的需求,然后我们将不得不在问题的解释上产生分歧。用户不应该关心内部表示。不过,我很想看看这个问题的重新编辑进展如何。同样的问题和答案是,如果您使用多个主键,那么第一个主键将用作分区键,其他主键表示复合列[指定主键中的所有列以模拟复合列的cli版本]@Tamil I know。但是复合柱可以是分开的。网上有很多这样的例子。你可能希望有一个复合PK和多个复合列。@Tamil,根据保罗的说法,你是对的!很高兴你得出结论:)泰米尔人你在这方面工作的时间显然比我长。我将向Datastax提出一个关于如何帮助澄清其文档的建议。谢谢你的帮助,伙计,谢谢你。现在有道理了。我很乐意帮助您处理税务文件。清晰的技术文档是我的专长之一。我确切地知道需要什么来澄清这一点。我如何联系您?您所说的“创建复合存储引擎密钥”是指分区密钥吗?谁否决了这个答案?为什么?如果你投了反对票,请给出解释。不确定这是否回答了问题。引用的文档没有解释如何在表(而不是列族)级别构建复合列,只有复合键。@ChrisGerken我相信文档就是问题所在,Paul的答案是正确的。例如,我浏览了eBay关于Cassandra()的博客,Paul所说的在技术上是有意义的(现在我理解了这些术语的上下文)。我注意到这里有很大的混乱