我正在用Cassandra开始一个新项目(并计划使用最新的稳定版(1.2.x))。我尝试过几种不同的Java库,如Hector、Astyanax、Cassandra jdbc。。。
其中,(简而言之)我的选择是阿斯蒂亚纳克斯。但后来我也发现并尝试了数据堆栈的Java驱动程序,它支持新的CQL二进制协议,如果你只使用CQL,它要干净得多。而且1.0.0 GA版本似乎很快就会发布。
你会推荐哪一个?谢谢
我使用过Astyanax。它有很好的文档记录并且易于使用,前提是您可以编写比CQL多5倍的代码。
现在我正在使用CQL,因为和我一起工作的人还没有完全理解Astyanax代码——为什么他们必须为列名编写类。如果你不使用Astyanax或Hector,我想你永远不会正确理解Cassandra的内部结构。
我个人使用过Hector、Astyanax、佩洛普斯、Fluent Cassandra、Datastax的Driver和Pycassa,在使用了这么多API之后,我终于意识到Astyanax最适合我(这是我个人的考虑)。
我在阿斯特亚纳克斯发现的区别于联盟中其他球队的特点是
我建议你使用基于cql3的驱动程序。一些选择是JDBC驱动或者更好的支持异步连接的Datastax驱动。您可能需要自己构建datastax的驱动程序,但是使用maven可以轻松完成。
Thrift不会在Cassandra中获得任何新功能,它被保留为向后可比性,大多数C*社区成员建议在新项目中使用基于cql的驱动程序:
如上所述,我们认为CQL3对于Cassandra来说是一个比节俭API更简单、整体更好的API。因此,鼓励新项目/应用程序使用CQL3
-来源
此外,CQL的性能也在迅速提高。以下是一些过时的基准
更新
因为答案已经写好了,所以为驱动程序创建了一个maven中央存储库,所以现在使用它只需将依赖项添加到maven即可:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-parent</artifactId>
<version>1.0.0</version>
</dependency>
我正在使用卡桑德拉1.2.4和1.0.0的Datastax java驱动程序(通过Clojure的Alia,但我认为这在这里并不重要)。如果我准备一个带有 timeuuid 列的语句,并将 “now()” 放在 timeuuid 的值中,now() 在编译准备好的语句时被计算一次,然后就再也没有计算过了。 想象一下这个准备好的语句:"插入到some_table(id, time)值(?, now(
请看下面的代码,让我知道我哪里做错了? 使用: DSE版本-5.1.0 172.31.16.45:9042连接到测试群集。[cqlsh 5.0.1|Cassandra3.10.0.1652|DSE 5.1.0|CQL规范3.4.4|本地协议v4]使用HELP寻求帮助。 谢谢 斯卡拉 斯卡拉 斯卡拉 我在这里什么都得不到?甚至没有错误。
我有两个节点Cassandra(3.10)集群。我正在尝试将Mysql数据迁移到Cassandra。一切正常,但现在在传输 1.5 TB 数据后,我尝试登录集群 - 我收到以下错误: 迁移仍在进行,Nodetool状态正常: 我在system.log档案里找不到什么 任何解决这个问题的想法都是值得考虑的。
我已经用下面的CQL创建了一个表:我想运行查询,按演员姓名(不区分大小写)查找所有视频。 我想从表中选择所有行,而不管演员的名字大小写,例如“汤姆·汉克斯”、“汤姆·汉克斯”、“汤姆·汉克斯”等。 有可能吗?
我应该如何使用数据斯塔克斯java卡桑德拉驱动程序检查空结果集? 假设我正在执行以下查询"SELECT*Frommy_tableWHERE mykey=某物" 查询不匹配的可能性很大。以下代码不起作用:
我正在尝试运行以下查询 我将Long的Java列表绑定为参数,并得到一个异常 如果我尝试使用(?),它期望绑定单个Long项目,但我需要一个集合 语法有误吗?