Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CouchbaseClient VS CouchbaseCluster_Java_Couchbase - Fatal编程技术网

Java CouchbaseClient VS CouchbaseCluster

Java CouchbaseClient VS CouchbaseCluster,java,couchbase,Java,Couchbase,我正在尝试在我的应用程序中实现couchbase 我对这件事感到困惑 com.couchbase.client.CouchbaseClient 及 com.couchbase.client.java.CouchbaseCluster 我试着用谷歌搜索CouchbaseClient和CouchbaseCluster,但没有发现哪一个更好&利弊 我知道我们有3种Couchbase客户端,一种是vBucket感知的,一种是传统的旧客户端,它支持通过Moxi服务器进行自动集群 是否有人已经使用过couc

我正在尝试在我的应用程序中实现couchbase

我对这件事感到困惑

com.couchbase.client.CouchbaseClient

com.couchbase.client.java.CouchbaseCluster

我试着用谷歌搜索CouchbaseClient和CouchbaseCluster,但没有发现哪一个更好&利弊

我知道我们有3种Couchbase客户端,一种是vBucket感知的,一种是传统的旧客户端,它支持通过Moxi服务器进行自动集群

是否有人已经使用过couchbase为我提供了一些关于这两个Java客户端的链接或详细信息

我已经在CouchbaseClient和CouchbaseCluster上做了一些功课,比如通过这两种方式插入、更新和删除文档。 在Couchbase客户端中,存储的文档是序列化的,您无法通过Couchbase管理控制台查看和编辑这些文档,而如果通过Couchbase群集存储的StringDocument、JsonDocument、JsonArrayDocument等文档可以通过Couchbase管理控制台查看和编辑


我的要求是我想使用一个couchbase客户端,它是自动可配置的(vBucket感知的),就像如果我向集群添加新节点,它会自动检测到它,或者如果任何节点失败,它会自动检测到它,并且不会引发任何异常。此外,如果我添加新集群,我希望它能够自动检测并开始使用它。我不想为所有这些事情修改应用程序代码。

现在有两代官方Couchbase Java SDK:

  • 第1代(当前为
    1.4.x
    ,不确定修补程序版本)源自旧的Memcached客户端
    spymecached
    。。。现在,它只是一个bug修复,您可以将
    CouchbaseClient
    作为主要API
  • 第2代是重写,在Maven中分为
    核心
    工件和
    java客户端
    工件。当前版本为
    2.1.3
    。这是您处理
    CouchbaseCluster
    的地方
在旧版本中,您必须为处理的每个bucket实例化一个
CouchbaseClient

在新一代中,集群和bucket的概念是头等公民,您可以(也应该)重用相同的
cluster
实例来打开对不同
bucket
的引用。
Bucket
s也应重复使用(不要多次打开同一个Bucket)。通过这种方式,资源可以更好地共享

此外,新一代的API更加一致,使用
RxJava
进行异步处理,等等。。。它是群集感知的,将获得群集拓扑的更新(新节点、故障节点等)

注意,这两代在Maven中是不同的工件(旧的是
couchbase客户端
,而新的是
java客户端


如果您“添加新集群”,您不可能收到这样的通知,但该操作对我来说真的没有意义…

谢谢Simon,是的,我读到了关于Couchbase Java SDK的这两个不同版本或不同代次的信息。是的,两者都有各自的优势。所以,假设您想将一个简单的POJO保存到couchbase,您应该使用couchbase客户端,因为它直接以序列化形式存储您的对象,并以去序列化形式提供给您,在CouchbaseCluster中,您必须将POJO映射到文档,然后再存储它,反之亦然。但正如您所说,新一代集群和bucket是一流的公民,它让您在处理集群和bucket时拥有更多的控制权和权力。