astyanax还是java驱动程序?

xienkqul  于 2021-06-14  发布在  Cassandra
关注(0)|答案(5)|浏览(437)

我正在用cassandra启动一个新项目(并计划使用最新的稳定(1.2.x)版本)。我试过几种不同的java库,比如hector、astyanax、cassandra jdbc。。。
其中,(简而言之)我的选择是阿斯蒂亚纳克斯。但后来我也找到并尝试了datastax的java驱动程序,它支持新的cql二进制协议,如果您只使用cql,它会更干净。看来1.0.0GA版本很快就会发布了。
你推荐哪一个?谢谢。

ahy6op9u

ahy6op9u1#

我同意赞森/瓦尔奇库的观点。datastax java驱动程序是未来的趋势。用sql操作cassandra非常方便。同时,我还推荐cassandraexecutor,一个简单的datastax java驱动程序 Package 器。与java驱动程序相比,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的开发者)

crcmnpdw

crcmnpdw2#

对于一个刚刚开始的新项目,您肯定应该使用新的DataStaxJava驱动程序和Cassandra1.2。驱动程序刚刚发布,驱动程序和Cassandra1.2在接下来的几个月里只会随着你的新项目的开发变得更加稳定。

ckocjqey

ckocjqey3#

我建议你使用基于cql3的驱动程序。有些选择是jdbc驱动程序,或者更好的datastax驱动程序,它支持异步连接。您可能需要自己构建datastax的驱动程序,但是使用maven可以轻松地完成这一点。
节俭不会在cassandra中获得任何新功能,它是为了向后比较而保留的,大多数c*社区成员建议在新项目中使用基于cql的驱动程序:
如上所述,我们相信cql3是一个更简单的、总体上更好的用于cassandra的api,而不是thrift api。因此,鼓励新项目/应用程序使用cql3
-来源
cql的表现也在迅速好转。以下是一些过时的基准。
更新
因为答案是编写的,所以为驱动程序创建了一个maven中央存储库,所以现在要使用它,只需将依赖项添加到maven:

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-parent</artifactId>
    <version>1.0.0</version>
</dependency>
ax6ht2ek

ax6ht2ek4#

我用过阿斯蒂亚纳克斯。如果您编写的代码是cql的5倍以上,那么它是有很好的文档记录并且易于使用的。
现在我正在使用cql,因为和我一起工作的人还没有完全掌握astyanax代码——为什么他们必须为列名编写类。如果你不使用阿斯蒂亚纳克斯或赫克托,我想你永远也不会正确理解Cassandra的内部结构。

t1qtbnec

t1qtbnec5#

我个人使用过hector、astyanax、pelops、fluent cassandra、datastax的驱动程序和pycassa,在使用了这么多api之后,我终于意识到astyanax最适合我(这是我个人的考虑)。
我在阿斯蒂亚纳克斯发现的区别于联盟其他球队的特点是
api的易用性
组合柱支撑
连接池
延迟
文档
更新

相关问题