Python最佳的Cassandra库/封装是什么?

18

你可以尝试使用DataStax的Python驱动程序 https://github.com/datastax/python-driver 它似乎很活跃。 - Fizer Khan
3
我认为这个问题不是基于个人意见的。它是一个关于最佳实践的问题。 - Florian Lagg
4个回答

30
Cassandra项目现在已经推荐新项目使用CQL几个版本了,特别是随着Cassandra 1.1中CQL 3的出现,我强烈建议直接使用它。优点包括如果您以前使用过SQL,那么语法更加熟悉,并且不同语言的CQL驱动程序之间具有通用性。无论您是从Java、Python、Ruby、Node.js或其他任何语言使用CQL,都是一样的。驱动程序不需要像完整的Cassandra客户端库那样支持那么多功能,因此需要进行的维护较少,对客户端作者的依赖也较少。

Python CQL驱动程序位于GitHub上:datastax/python-driver。(先前的版本发布在Google Code上。)

关于CQL的信息,请参阅Datastax的全面文档 CQL 2,一篇关于如何使用CQL 3创建有效数据模型的文章,以及一篇CQL 3有什么新内容的总体介绍。

此外,还有一份完整的CQL 3参考资料,正在等待批准加入官方的Cassandra repo;在等待期间,您应该能够在pcmanus的github上阅读它。

虽然这样说,但如果您不想使用CQL,Pycassa确实得到了更好的维护,并且应该会有很长时间的良好支持。


谢谢你的回答,特别感谢提供的链接,它们非常好。关于pycassa:它是否使用CQL?我能否结合使用pycassa并通过它使用CQL进行一些特殊操作? - Florian Lagg
1
我想我找到了一个答案:pycassa正在使用thrift,所以这里没有CQL。我会选择CQL3和你的建议。谢谢。 - Florian Lagg
2
对的,pycassa使用thrift并不适合CQL。然而,如果你真的想将两者结合起来,通过使用execute_cql thrift调用,执行CQL语句应该是可能的。你只是不会得到任何驱动程序便利,比如惯用的数据库接口、简单的反序列化和模式解释等。 - the paul

4

我会选择使用pycassa。我们已经使用它相当长时间了,效果不错。


如果您正在启动一个新项目,强烈建议您使用较新的DataStax Python驱动程序,而不是pycassa。 - Bardia Heydari
1
记录一下,pycassa不支持Python 3。 - dohmatob

1

目前我也在使用pycassa,并将结果传递给colander,它将一些模型连接到使用pycassa获取的查询结果。

这类似于pycassa.columnfamilymap提供的功能,但我可以直接“模拟”ORM并使用相同的“模型”通过deform生成/验证表单。

然而,如果有一些基于CQL编写的“真正的ORM”出现,我会转向它,但目前这是我找到的解决方案。如果有更好的解决方案,我会非常感兴趣考虑。


0

如果您使用的是较旧版本的Cassandra(特别是1.0.8),请不要使用CQLSH。我正在使用CQLSH,但得到的数据不正确,与我从cassandra-cli获得的数据不一致。我尝试使用nodetool的修复、清理等功能,但出现了“错误连接到远程JMX代理!”的错误。我也非常确定cassandra-cli的数据是正确的。

真是一堆垃圾...

编辑:

事实证明,我在客户端和服务器端使用的是不同版本的Cassandra。我以为它是向后兼容的,但显然不是。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接