我开始与Cassandra的新项目(并计划使用最新的稳定版(1.2.x版))。我尝试了几个不同的Java库,如Hector,Astyanax,Cassandra-jdbc ...新Cassandra项目 - Astyanax或Java驱动程序?
其中,(总之)我的选择是Astyanax。但后来我又发现并试用了DataStax的Java Driver,它支持新的CQL二进制协议,并且如果您仅使用CQL,则会更加清洁。看来版本1.0.0 GA即将发布。
你会推荐哪一个?谢谢。
我开始与Cassandra的新项目(并计划使用最新的稳定版(1.2.x版))。我尝试了几个不同的Java库,如Hector,Astyanax,Cassandra-jdbc ...新Cassandra项目 - Astyanax或Java驱动程序?
其中,(总之)我的选择是Astyanax。但后来我又发现并试用了DataStax的Java Driver,它支持新的CQL二进制协议,并且如果您仅使用CQL,则会更加清洁。看来版本1.0.0 GA即将发布。
你会推荐哪一个?谢谢。
我建议你使用基于cql3的驱动程序。一些选择是支持异步连接的JDBC driver或甚至更好的Datastax's driver。您可能必须自己构建datastax的驱动程序,但这可以使用maven轻松完成。
节俭是不会越来越在卡桑德拉的任何新功能,其被关了向后可比性和最C *社区成员使用基于定制列表驱动新项目的建议:
如上所述,我们相信CQL3对于Cassandra而言是一个比节俭API更简单,整体更好的API。因此,新的项目/应用鼓励使用CQL3
- source
而且CQL的表现非常迅速地变得越来越好。下面是一些过时的benchmarks.
UPDATE
因为答案是写一个maven central repository是为驾驶者创造所以现在使用它只需添加依赖到Maven:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-parent</artifactId>
<version>1.0.0</version>
</dependency>
我曾亲自使用Hector,Astyanax,Pelops,流利的Cassandra,Datastax的Driver和Pycassa,在使用了这么多API之后,我终于意识到Astyanax最适合我(它是我个人的考虑)。
特征i的astyanax发现了区分它从他人在联赛是
Hector和datastax的驱动程序支持组合列(不知道其他人),我会说CQL比Astyanax更易于使用。同样节俭的是,CQL3应该用于新项目。 –
嗯,我知道队友,其实我的考虑是在易于访问。是的CQL始终是一个更容易的选择,并且仍然如此(众所周知的事实是RDBMS背景),我可以保证,即使最大百分比的Astyanax用户使用他们的API中的CQL语句。 – abhi
+1为Astyanax。 CQL并不容易 - 它只能成为:你可以简单地编写未执行的查询并且遇到麻烦,因为它使你成为关系型数据库,并且不会迫使你真正理解nosql存储的语义。 –
我已经使用Astyanax。它具有良好的文档记录并且易于使用,前提是编写5倍以上的代码比CQL没有问题。
现在我正在使用CQL,因为我一起工作的人没有完全掌握Astyanax代码 - 为什么他们必须为列名编写类。我认为如果你不使用Astyanax或Hector,你将永远无法理解Cassandra的内部结构。
你一定要用新的DataStax Java Driver和Cassandra 1.2来开始一个新的项目。这位车手刚刚参加了GA赛事,在开发新项目时,车手和Cassandra 1.2都将在未来几个月内变得更加稳定。
我同意Zanson/Valchkou。 DataStax Java Driver是未来。使用SQL运行Cassandra非常方便。同时,我也推荐CassandraExecutor,一个简单的包装DataStax Java Driver。与Java驱动程序相比,CassandraExecutor具有以下功能:
下面是一个简单的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的开发者)
+1 Astyanax!真棒api! –