我建议你使用基于cql3的驱动程序。一些选择是JDBC driver 或者更好的Datastax's driver,它支持异步连接。你可能需要自己构建Datastax的驱动程序,但可以使用maven轻松完成。
在Cassandra中,Thrift不会获得任何新功能,它被保留为向后兼容性,并且大多数C *社区成员建议使用基于cql的驱动程序进行新项目:
如上所述,我们认为CQL3是比thrift API更简单和更好的Cassandra API。因此,鼓励新项目/应用程序使用CQL3
- 来源
此外,CQL的性能正在迅速提高。这里有一些过时的基准测试。
更新
由于驱动程序的maven中央仓库已创建,因此现在只需将其添加到maven依赖项中即可使用它:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-parent</artifactId>
<version>1.0.0</version>
</dependency>
我使用过Astyanax。它有很好的文档和易于使用,只要你写的代码比CQL多五倍以上没有问题。
目前我正在使用CQL,因为我合作的人还没有完全掌握Astyanax的代码 - 他们为什么要为列名编写类。我认为如果不使用Astyanax或Hector,您永远不会正确地理解Cassandra的内部机制。
我同意Zanson/Valchkou的观点。DataStax Java Driver是未来的趋势。使用SQL操作Cassandra非常方便。同时,我也推荐CassandraExecutor,它是DataStax Java Driver的简单包装器。相比Java Driver,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的开发者。