我正在用cassandra启动一个新项目(并计划使用最新的稳定(1.2.x)版本)。我试过几种不同的java库,比如hector、astyanax、cassandra jdbc。。。其中,(简而言之)我的选择是阿斯蒂亚纳克斯。但后来我也找到并尝试了datastax的java驱动程序,它支持新的cql二进制协议,如果您只使用cql,它会更干净。看来1.0.0GA版本很快就会发布了。你推荐哪一个?谢谢。
ahy6op9u1#
我同意赞森/瓦尔奇库的观点。datastax java驱动程序是未来的趋势。用sql操作cassandra非常方便。同时,我还推荐cassandraexecutor,一个简单的datastax java驱动程序 Package 器。与java驱动程序相比,cassandraexecutor具有以下特点:使用sql/entity为(同步/异步)操作(crud)提供一致/集成/简洁的API。dataset,它支持distinct/merge/sort/groupby/join/union/unionall/except/intersect/paginate/filter/count/tojosn/toxml/tocvs。。。下面是一个简单的crud(创建/读取/更新/删除)示例:
Account account = createAccount(); // create String sql_insert = NE.insert(ID, GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql(); cassandraExecutor.execute(sql_insert, account); // read String sql_selectByGUI = NE.select(ID, GUI, FIRST_NAME, LAST_NAME).from(Account._).where(L.eq(ID, L.QME)).sql(); Account dbAccount = cassandraExecutor.queryForEntity(Account.class, sql_selectByGUI, account); // update String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(ID, L.QME)).sql(); dbAccount.setFirstName("newFirstName"); cassandraExecutor.execute(sql_updateByLastName, dbAccount); // delete String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(ID, L.QME)).sql(); cassandraExecutor.execute(sql_deleteByFirstName, dbAccount);
(声明:我是cassandraexecutor的开发者)
crcmnpdw2#
对于一个刚刚开始的新项目,您肯定应该使用新的DataStaxJava驱动程序和Cassandra1.2。驱动程序刚刚发布,驱动程序和Cassandra1.2在接下来的几个月里只会随着你的新项目的开发变得更加稳定。
ckocjqey3#
我建议你使用基于cql3的驱动程序。有些选择是jdbc驱动程序,或者更好的datastax驱动程序,它支持异步连接。您可能需要自己构建datastax的驱动程序,但是使用maven可以轻松地完成这一点。节俭不会在cassandra中获得任何新功能,它是为了向后比较而保留的,大多数c*社区成员建议在新项目中使用基于cql的驱动程序:如上所述,我们相信cql3是一个更简单的、总体上更好的用于cassandra的api,而不是thrift api。因此,鼓励新项目/应用程序使用cql3-来源cql的表现也在迅速好转。以下是一些过时的基准。更新因为答案是编写的,所以为驱动程序创建了一个maven中央存储库,所以现在要使用它,只需将依赖项添加到maven:
<dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-parent</artifactId> <version>1.0.0</version> </dependency>
ax6ht2ek4#
我用过阿斯蒂亚纳克斯。如果您编写的代码是cql的5倍以上,那么它是有很好的文档记录并且易于使用的。现在我正在使用cql,因为和我一起工作的人还没有完全掌握astyanax代码——为什么他们必须为列名编写类。如果你不使用阿斯蒂亚纳克斯或赫克托,我想你永远也不会正确理解Cassandra的内部结构。
t1qtbnec5#
我个人使用过hector、astyanax、pelops、fluent cassandra、datastax的驱动程序和pycassa,在使用了这么多api之后,我终于意识到astyanax最适合我(这是我个人的考虑)。我在阿斯蒂亚纳克斯发现的区别于联盟其他球队的特点是api的易用性组合柱支撑连接池延迟文档更新
5条答案
按热度按时间ahy6op9u1#
我同意赞森/瓦尔奇库的观点。datastax java驱动程序是未来的趋势。用sql操作cassandra非常方便。同时,我还推荐cassandraexecutor,一个简单的datastax java驱动程序 Package 器。与java驱动程序相比,cassandraexecutor具有以下特点:
使用sql/entity为(同步/异步)操作(crud)提供一致/集成/简洁的API。
dataset,它支持distinct/merge/sort/groupby/join/union/unionall/except/intersect/paginate/filter/count/tojosn/toxml/tocvs。。。
下面是一个简单的crud(创建/读取/更新/删除)示例:
(声明:我是cassandraexecutor的开发者)
crcmnpdw2#
对于一个刚刚开始的新项目,您肯定应该使用新的DataStaxJava驱动程序和Cassandra1.2。驱动程序刚刚发布,驱动程序和Cassandra1.2在接下来的几个月里只会随着你的新项目的开发变得更加稳定。
ckocjqey3#
我建议你使用基于cql3的驱动程序。有些选择是jdbc驱动程序,或者更好的datastax驱动程序,它支持异步连接。您可能需要自己构建datastax的驱动程序,但是使用maven可以轻松地完成这一点。
节俭不会在cassandra中获得任何新功能,它是为了向后比较而保留的,大多数c*社区成员建议在新项目中使用基于cql的驱动程序:
如上所述,我们相信cql3是一个更简单的、总体上更好的用于cassandra的api,而不是thrift api。因此,鼓励新项目/应用程序使用cql3
-来源
cql的表现也在迅速好转。以下是一些过时的基准。
更新
因为答案是编写的,所以为驱动程序创建了一个maven中央存储库,所以现在要使用它,只需将依赖项添加到maven:
ax6ht2ek4#
我用过阿斯蒂亚纳克斯。如果您编写的代码是cql的5倍以上,那么它是有很好的文档记录并且易于使用的。
现在我正在使用cql,因为和我一起工作的人还没有完全掌握astyanax代码——为什么他们必须为列名编写类。如果你不使用阿斯蒂亚纳克斯或赫克托,我想你永远也不会正确理解Cassandra的内部结构。
t1qtbnec5#
我个人使用过hector、astyanax、pelops、fluent cassandra、datastax的驱动程序和pycassa,在使用了这么多api之后,我终于意识到astyanax最适合我(这是我个人的考虑)。
我在阿斯蒂亚纳克斯发现的区别于联盟其他球队的特点是
api的易用性
组合柱支撑
连接池
延迟
文档
更新