-2

我想将 cassandra 用于我的用例并搜索 java 客户端。我发现了许多用于 cassandra 的 java 接口以及 Spring 数据 cassandra。多年来我一直在使用弹簧。我想在性能和功能方面了解 spring data cassandra vs Astyanax。

4

2 回答 2

2

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

为什么这很重要?

Cassandra 2.1与原始 Thrift 协议相比,在 CQL3/二进制协议方面带来了一些显着的性能提升。我之前(2 年前)使用过 Astyanax,当时它比 Hector 有了一些显着的改进。但是较新的基于 CQL3 的驱动程序更易于使用。现在它们的性能也优于基于 Thrift 的驱动程序,选择变得更加容易。

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

不过老实说,如果您正在开始一个新项目,您应该考虑使用DataStax Java 驱动程序。它也是基于 CQL3/二进制的,并且最新版本有一些可用性改进,例如对象映射 API,大大简化了基本的 CRUD 操作。使用支持 DataStax 的驱动程序绝对不会出错。

于 2015-04-15T20:07:59.160 回答
0

试试CassandraExecutor,这是一个基于DataStax Java 驱动程序的简单包装器。与 Java Driver 相比,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的开发者)

于 2015-12-22T03:03:40.333 回答