我想在我的用例中使用cassandra并为它搜索java客户端。我发现了许多用于cassandra的java接口以及Spring数据cassandra。我多年来一直在使用弹簧。我想知道cassandra与Astyanax在性能和功能方面的数据。
答案 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具有以下功能:
这是一个简单的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的开发者)