卡桑德拉 java 客户端

Cassandra java client

我想将 cassandra 用于我的用例并搜索 java 客户端。我发现许多 java cassandra 接口以及 Spring data cassandra。多年来我一直在使用 spring。我想知道 spring data cassandra 与 Astyanax 在性能和功能方面的对比。

选择 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. It is also CQL3/binary based, and the latest version has some usability improvements like an Object-mapping API that greatly simplifies basic CRUD operations. And you simply cannot go wrong by using a DataStax supported driver

尝试CassandraExecutor, a simple wrapper based on DataStax Java Driver。与 Java Driver 相比,CassandraExecutor 具有以下特点:

  • Consistent/Integrated/concise APIs for (sync/Async) operations(CRUD) with SQL/entity.
  • DataSet,支持distinct/merge/sort/groupBy/join/union/unionAll/except/intersect/paginate/filter/count/toJOSN/toXML/toCVS...

这是一个简单的 CRUD(create/read/update/delete) 示例:

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的开发者)