3

我终于掌握了 Cassandra 的窍门,部分问题是学习/尊重 Thrift 和 CQL3 之间的差异。

我在网上找到的许多教程都是针对 CQL3 的。我的问题:CQL3 真的是首选方法吗,Thrift 是否被劝阻?我问的原因是我花了几天时间试图通过不支持 Cassandra 1.2 并且基于 Thrift 模型的 Pycassa 获得我需要的东西。

4

3 回答 3

5

CQL3 真的是首选方法吗,Thrift 是否被劝阻?

简短的回答是肯定的。

更长的答案是:

出于多种原因,应该首选 CQL3:

  1. 平台无关语言:CQL3 看起来像 SQL,并且更容易处理纯 Thrift API 代码。

  2. 更高层次的抽象:对于最终用户来说,使用 CQL3 来查询数据比使用低级 Thrift API 更容易,尽管存在一些好的更高抽象框架(Java 的 Hector,Python 的 Pycassa ...=

  3. 操作团队更易于管理:创建新表或添加新参考数据时,编写操作团队可以理解、检查和执行的 CQL3 脚本比编写神秘的 cassandra-cli 脚本更容易(设置 cf[rowKey][columnName ] = ...)。我正在将我们所有的 cassandra-cli 脚本迁移到 CQL3,因为维护它们很麻烦

  4. 最后但同样重要的是,CQL3 使第三方框架开发人员的生活更轻松。我开发了Achilles,一个 Cassandra 的开源持久性管理器。Thrift 版本很难实现,CQL3 版本是小菜一碟,尤其是因为它使用了 Datastax 的 Java 驱动程序

话虽如此,CQL3 也不是玫瑰床。在充分利用查询语言的强大功能之前,您需要了解 Cassandra 存储引擎的工作原理。该语言给您一种错觉,即一切都很简单,并且可以像 SQL 一样工作,但事实并非如此。存在一些重要的语义差异,尤其是在使用WHERE子句时。

于 2013-09-16T18:56:59.190 回答
1

是的,CQL 是首选 API。它更易于使用,并非所有操作都通过 Thrift API 得到支持。

您可以在 Python 中将 cassandra-dbapi2 用于 CQL3:https ://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/ 。

于 2013-09-16T18:58:06.750 回答
1

简短的回答:是的

然而,鉴于它与基于 thrift 的客户端相比是多么新,可以肯定地假设生产中的 thrift 客户端要多得多。

鉴于 Datastax 现在生产他们自己的仅支持 CQL3 的 Java 驱动程序,遵循套件可能是一个好主意:https ://github.com/datastax/java-driver

于 2013-09-16T21:06:05.740 回答