我可能想使用erlacassa在Cassandra和Eralng之间进行通信。它是一个 CQL 客户端。所以我想知道,与 Thrift 访问的 cassandra 相比,CQL(cassandra 查询语言)有哪些限制?
例如,我在互联网上发现:
CQL 目前有一些限制,不支持 GROUP BY、ORDER BY 等操作
这部分取决于您使用的 Cassandra 版本。例如,CQL 直到 CQL 3.0 才支持复合列(在 Cassandra 1.1 中可用,但默认情况下未启用)。但在大多数情况下,所有主要功能都在 thrift API 和 CQL 中可用。
至于group by
这不受 CQL 或 thrift API 的支持。Order by
在 CQL 3.0 中,但它仅用于指定反向排序(这与 Thrift 的限制相同)。听起来您发现的文章是将 Cassandra 与传统的 SQL 数据库进行比较。
除了语法差异之外,最大的不同是 CQL 伪装成 SQL,而 thrift API 没有这样的伪装。开发人员将看到 SQL 并做出根本不适用于 Cassandra 的关系假设。例如,这里有讨论提倡使用 order by。在 Cassandra 的世界中,最好对您希望访问数据的每一种方式的具体化视图进行非规范化,而不是通过更改查询。
不要误会我的意思。我认为用 DSL 替换 thrift 接口很有价值,例如http://glennengstrand.info/nosql/cassandra/cql,但我相信熟悉 SQL 作为访问关系数据的一种方式将引导开发人员使用 Cassandra以根本无法扩展的方式。