CQL限制

3
我可能想使用 erlacassa来在 Cassandra Eralng之间进行通信。它是一个CQL客户端。因此,我想知道CQL(Cassandra查询语言)与通过thrift访问Cassandra的限制有何不同?
例如,我在互联网上发现:
CQL目前存在一些限制,不支持诸如GROUP BY、ORDER BY等操作。
2个回答

4
这在一定程度上取决于您使用的Cassandra版本。例如,CQL在3.0之前不支持复合列(在Cassandra 1.1中可用但默认情况下未启用)。但就大多数功能而言,所有主要功能都可以在thrift API和CQL中使用。
至于“group by”,这在CQL和thrift API中都不受支持。“Order by”在CQL 3.0中有,但仅用于指定反向排序(这与通过Thrift获得的限制相同)。看起来,您找到的文章是将Cassandra与传统的SQL数据库进行比较。

CQL 3支持order by,如果使用得当,它会很高效。 - the paul
是的,你说得对,order by 在 CQL 中是存在的(参见CASSANDRA-3925)。我已经更新了答案以更好地反映它的工作方式。 - psanford

2
除了语法差异外,最大的区别在于CQL试图模仿SQL而thrift API则没有这种假装。开发者会看到SQL并做出关系型数据库的假设,但这些并不适用于Cassandra。例如,在这里有讨论提倡使用order by。在Cassandra世界中,比起更改查询,更好的方式是去归一化每一种你希望访问数据的物化视图。
不要误解我,我认为用DSL(如http://glennengstrand.info/nosql/cassandra/cql)代替thrift接口有很大价值,但我认为将SQL作为访问关系型数据的方式会导致开发者以无法扩展的方式使用Cassandra。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接