我可能想使用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以根本无法扩展的方式。