【问题标题】:Cassandra 1.2: Is CQL preferred over Thrift Based ClientsCassandra 1.2:CQL 优于基于 Thrift 的客户端
【发布时间】:2013-09-16 18:40:06
【问题描述】:

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

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

【问题讨论】:

  • 如果您不知道,此驱动程序是您通过 python 使用 CQL3 的最佳选择:github.com/datastax/python-driver。 (我是它的作者,也是pycassa的维护者。)

标签: cassandra pycassa


【解决方案1】:

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 子句时。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      简短回答:是的

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 2021-12-11
        • 2011-02-13
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 2017-10-25
        相关资源
        最近更新 更多