我终于掌握了Cassandra,问题的一部分是学习/尊重Thrift和CQL3之间的差异。
我在网上找到的很多教程都是针对CQL3的。我的问题:CQL3是否真的是首选方法,并且不鼓励Thrift?我问的原因是我花了几天时间试图通过Pycassa获得我需要的东西,而Pycassa不支持Cassandra 1.2并且基于Thrift模型。
答案 0 :(得分:5)
CQL3真的是首选方法吗?不鼓励Thrift吗?
简短回答是。
更长的答案是:
CQL3应该是首选的,原因有很多:
与平台无关的语言:CQL3看起来像SQL,更容易处理纯粹的Thrift API代码。
更高级别的抽象:对于最终用户来说,处理CQL3来查询数据比使用低级Thrift API更容易,尽管存在一些更好的更高抽象框架(Hector for Java,Pycassa for Python) ... =
更易于管理运营团队:在创建新表或添加新的参考数据时,编写运营团队可以理解,检查和执行的CQL3脚本更容易,而不是隐秘cassandra-cli脚本(设置cf [rowKey] [columnName] = ...)。我正在将所有cassandra-cli脚本迁移到CQL3,因为维护它们很麻烦
最后但同样重要的是,CQL3让第三方框架开发人员的生活更轻松。我为Cassandra开发了 Achilles ,一个开源的持久性管理器。 Thrift版本很难实现,CQL3版本是一块蛋糕,特别是因为它使用了来自Datastax的Java驱动程序
话虽如此,CQL3也不是玫瑰花。在充分利用查询语言之前,您需要了解Cassandra存储引擎的工作原理。这种语言让你觉得一切都很简单,并且可以像SQL那样工作,但事实并非如此。有一些重要的语义差异,尤其是在使用 WHERE 子句时。
答案 1 :(得分:1)
是的,CQL是首选API。它更容易使用,并且Thrift API不支持所有操作。
您可以在Python中使用cassandra-dbapi2 for CQL3:https://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/。
答案 2 :(得分:1)
简答:是的
然而,鉴于它与基于节俭的客户相比有多新,可以安全地假设生产中有更多的节俭客户。
鉴于Datastax现在生成他们自己的Java驱动程序,它只支持CQL3,所以关注套件可能是个好主意:https://github.com/datastax/java-driver