Cassandra Client Java API 的 [已关闭]

2022-08-31 22:13:43

我最近开始使用Cassandra Database。现在,我正在评估我们应该推进哪一项。Cassandra client

我已经看到过关于stackoverflow的各种帖子,关于将哪个客户端用于Cassandra,但没有一个有非常明确的答案。

我的团队要求我对此进行一些研究,并在Java中为每个研究提出一些结果。pros and consCassandra Client API’s

正如我所提到的,我最近参与其中,所以不知道为什么某些人选择,为什么某些人会和其他一些客户一起去。CassandraPelops clientAstyanax

我知道每个Cassandra客户的简短事情,我的意思是我能够做到这一点,并开始读取和写入Cassandra数据库。

以下是我目前掌握的信息。

卡桑德拉·阿皮斯

  • Hector(Production-Ready)
    最稳定的Java API,为黄金时段做好准备。

  • Astyanax (The Up and Comer)
    来自 Netflix 的一个干净的 Java API。它不像赫克托那样被广泛使用,但它是坚实的。

  • Kundera(NoSQL ORM)
    符合JPA标准,当您想要通过对象与Cassandra交互时,这很方便。
    这在某种程度上限制了你,因为你将无法拥有动态数量的列/名称等。但它确实允许您通过ORM进行移植,或者将存储集中到Cassandra上以用于更传统的用途。

  • Pelops
    我只短暂地使用过Pelops。这是一个直截了当的API,但似乎没有动力。

  • PlayORM(没有约束的ORM?
    我刚刚听说过这个。看起来它试图通过引入JQL来解决传统的基于JPA的ORM和NoSQL之间的阻抗不匹配。它看起来很有希望。

  • 节俭(避开我!
    这是“低级”API。

以下是我们在决定中的优先事项Cassandra Client-

  • 首要任务是:低延迟开销、Asynch API 以及生产环境的可靠性/稳定性。
    (例如,可以在包装客户端的 DAL 中拥有更用户友好的 API)。
  • 连接池和分区感知是其他一些不错的功能。
  • 能够检测已添加的任何新节点。
  • 良好的支持以及(正如下面的院长所指出的那样)

任何人都可以对此提供一些想法吗?而且,每个客户的任何利弊以及哪些客户可以满足我的要求也将有很大的帮助。Cassandra Client

我相信,主要是围绕我猜想到目前为止的研究基础。但是不要有某些信息来支持我的研究并将其呈现给我的团队。Astyanax client or New Datastax client that uses Binary protocol

Astyanax客户端和New Datastax客户端(使用新的二进制协议)之间的任何比较都将有很大的帮助。

这将对我的研究有很大的帮助,并将从过去使用过不同客户的不同人那里获得很多这方面的知识。


答案 1

Thrift 正变得越来越像一个遗留的 API:

首先,您应该知道Thrift API不会获得新功能 ;它是为了向后兼容,不建议用于新项目。
- 保罗

所以我会避免使用基于Thrift的API(Thrift只是为了向后兼容而保留的)。

如果你确实需要使用基于节俭的API,我会选择Astyanax。Astyanax非常易于使用(与其他节俭的API相比,但我的个人经验是Datastax的驱动程序更容易)。

所以你应该看看Datastax的API(和GitHub repo)?我不确定是否有任何编译版本的API可供下载,但您可以使用Maven轻松构建它。此外,如果您查看GitHub存储库的提交日志,它会经历非常频繁的更新。

该驱动程序仅与 CQL3 一起使用,并且是异步的,但请注意,Cassandra 1.2 是最早受支持的版本。

性能
Astyanax 是基于节俭的,Datastax 的驱动器是二进制协议。以下是我在节俭和CQL之间可以找到的最新基准(请注意,这些基准绝对已经过时了)。但公平地说,这些基准测试中显示的微小性能差异将无关紧要。

Asynch支持
Datastax的asynch支持是Astyanax的明确优势(Netflix试图实现它,但决定不实施)。

文档
我真的不能反对Netflix的wiki。该文档非常出色,并且更新得相当频繁。他们的wiki包含代码示例,如果您需要查看工作中的代码,则可以在源代码中找到测试。我很难找到Datastax驱动程序的任何文档,但是GitHub存储库中提供了测试,因此这是一个起点。

也看看这个答案(好吧,反正不是我的那个)它研究了Thrift和CQL的一些优点/缺点。


答案 2

我会推荐 Datastax java 驱动程序 for Cassandra http://www.datastax.com

对于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); 

在 maven central 上可用

   <dependency>
      <groupId>com.valchkou.datastax</groupId>
      <artifactId>cassandra-driver-mapping</artifactId>          
    </dependency>

推荐