ars*_*nal 48 java cassandra hector pelops astyanax
我最近开始使用Cassandra数据库.现在我正在评估Cassandra client
我们应该推进哪些方面.
我已经在stackoverflow上看到关于哪个客户端用于Cassandra的各种帖子,但没有一个有非常确定的答案.
我的团队已经让我对此进行一些研究,并pros and cons
为Cassandra Client API’s
Java中的每一个做出一定的研究.
正如我所提到的,我最近参与其中,Cassandra
所以没有那么多想法为什么某些人选择Pelops client
以及为什么某些人和Astyanax
其他客户一起去.
我知道每个Cassandra客户的简短介绍,我的意思是我能够完成这项工作并开始阅读和写入Cassandra数据库.
以下是我到目前为止的信息.
CASSANDRA APIS
Hector(Production-Ready)
最稳定的Java API,为黄金时段做好准备.
Astyanax(The Up and Comer)
来自Netflix的干净Java API.它没有Hector广泛使用,但它是坚实的.
符合JPA标准的Kundera(NoSQL ORM),当您想通过对象与Cassandra进行交互时,这很方便.
这在一定程度上限制了您将无法拥有动态数量的列/名称等.但它确实允许您移植到ORM,或将存储集中到Cassandra以获得更多传统用途.
Pelops
我只是简单地使用了Pelops.这是一个直接的API,但似乎没有它背后的动力.
PlayORM(没有约束的ORM?)
我刚才听说过这个.看起来它试图通过引入JQL来解决传统的基于JPA的ORM和NoSQL之间的阻抗不匹配问题.看起来很有希望.
节俭(避免我!)
这是"低级"API.
以下是我们决定的优先事项Cassandra Client
-
任何人都可以对此提出一些想法吗?此外,每个Cassandra Client
客户都可以满足我的要求的任何利弊也将有很大的帮助.
我相信,主要是我将围绕着Astyanax client or New Datastax client that uses Binary protocol
我的研究基础到目前为止.但是没有某些信息可以支持我的研究并将其呈现给我的团队.
Astyanax客户端和New Datastax客户端(使用新的二进制协议)之间的任何比较都将有很大帮助.
这对我的研究有很大的帮助,并且会从过去使用不同客户的不同人那里获得很多相关知识.
Lyu*_*rov 23
Thrift正在成为一个传统的API:
首先,您应该知道Thrift API不会获得新功能; 它是为了向后兼容,而不是推荐用于新项目.
- 保罗
所以我会避免使用基于Thrift的API(只保留thrift以实现向后兼容).
在说如果你确实需要使用基于节俭的API我会去Astyanax.Astyanax非常易于使用(与其他节俭API相比,但我个人的经验是Datastax的驱动程序更容易).
那你应该看看Datastax的 API(和GitHub repo)?我不确定是否有任何已编译的API版本可供下载,但您可以使用Maven轻松构建它.此外,如果您查看GitHub repo的提交日志,它会经常进行更新.
该驱动程序专门使用CQL3并且是异步的,但要注意Cassandra 1.2是最早支持的版本.
性能
Astyanax基于节俭,Datastax的驱动器是二进制协议.以下是我在thrift和CQL之间可以找到的最新基准测试(注意这些基准测试肯定是过时的).但公平地说,这些基准测试中显示的性能差异很小.
Asynch支持
Datastax的异步支持是Astyanax的一个明显优势(Netflix 试图实施它但决定不这样做).
文档
我不能反对Netflix的wiki.文档非常好,并且经常更新.他们的wiki包含代码示例,如果需要查看代码,可以在源代码中找到测试.我努力寻找Datastax驱动程序的任何文档,但是在GitHub存储库中提供了测试,因此这是一个起点.
另外看看这个答案(好吧..不管我的那个)它研究了Thrift和CQL的一些优点/缺点.
我建议Cassandra http://www.datastax.com使用Datastax java驱动程序.
对于JPA之类的支持,请尝试我的映射工具. http://valchkou.com/cassandra-driver-mapping.html
注释驱动没有映射文件,没有脚本,没有配置文件.不需要DDL脚本.模式自动与实体定义同步.
使用范例:
Entity entity = new Entity();
mappingSession.save(entity);
entity = mappingSession.get(Entity.class, id);
mappingSession.delete(entity);
Run Code Online (Sandbox Code Playgroud)
在maven中心可用
<dependency>
<groupId>com.valchkou.datastax</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26016 次 |
最近记录: |