Cassandra java客户端

时间:2015-04-15 16:48:31

标签: cassandra spring-data-cassandra

我想在我的用例中使用cassandra并为它搜索java客户端。我发现了许多用于cassandra的java接口以及Spring数据cassandra。我多年来一直在使用弹簧。我想知道cassandra与Astyanax在性能和功能方面的数据。

2 个答案:

答案 0 :(得分:2)

在选择Cassandra驱动程序时,要考虑的一个更重要的方面是它在其核心使用的协议。 Astyanax使用Thrift,Spring使用新的CQL3二进制协议。

为什么这很重要?

Cassandra 2.1在CQL3/binary protocol vs. the original Thrift protocol方面带来了显着的性能提升。我之前(2年前)曾使用Astyanax,当时它比Hector有了一些重大改进。但是较新的基于CQL3的驱动程序更容易使用。现在,他们也超越了基于Thrift的驱动程序,选择变得更加容易。

所以考虑到Astyanax和Spring之间的选择,我会选择Spring。

老实说,如果你要开始一个新项目,你应该考虑DataStax Java Driver。它也是基于CQL3 /二进制文件的,最新版本有一些可用性改进,如Object-mapping API,大大简化了基本的CRUD操作。使用DataStax supported driver

,你就不会出错

答案 1 :(得分:0)

尝试CassandraExecutor,一个基于DataStax Java Driver的简单包装器。与Java驱动程序相比,CassandraExecutor具有以下功能:

  • 使用SQL /实体进行(同步/异步)操作(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的开发者)