CouchBase与Memcached混合,失去了大多数CouchDB的哲学和功能?

Muz*_*hua 7 javascript python java erlang couchdb

截至目前,我使用较新版本的CouchBase的唯一方法是通过memcached客户端.我使用Erlang作为编程语言,所以我抓住了自己的Erlang Memcached客户端.我注意到这个客户端通过erlang:term_to_binary/1 and erlang:binary_to_term/1在发送和接收来自memcached的数据时将它们从二进制转换为二进制来串行化和反序列化erlang术语(Key和Value).

在设置CouchBase时,我们被要求选择memcached存储桶或CouchBase存储桶(vbuckets).现在,我选择了CouchBase(因为我需要持久性).我开始使用erlang memcached客户端与设置进行交互,没关系,我保存了erlang术语并从数据库中获取了erlang术语.然而,问题从这里开始:

1.由于数据序列化,对象作为附件被接收.即使作为JSON从Erlang发送,它们也作为二进制数据发送,这对CouchBase(或Memcached?)没有任何意义.

{ 
    "_id": "mykey",
    "_rev": "1-000010fb1a2b02ef0000000d59960000",
    "$flags": 38489, 
    "$expiration": 0,
    "$att_reason": "invalid_json",
    "_attachments": {
    "value": {
                "content_type": "application/content-stream",
                "revpos": 2,
                "digest": "md5-n3mJhf2kKVQtkIunIbCJZQ==",
                "length": 13,
                "stub": true
            }
        }
    }

2.因此,无法搜索,通过CouchDB视图操作此数据.获取数据的唯一方法是"Key",但嵌套的对象可能是.使用原始的Couch DB,我们可以编写高级视图,Map reduce来搜索和操作数据库中的JSON数据等

.因此,我们无法清楚地使用像Couch应用程序和Couch Base 设计文档那样的东西,就像我们使用Couch DB一样因为,这些功能适用于Couch中的JSON数据处理.

问题
1.我知道CouchBase正在寻找与CouchDB不同的方法,但是,作为开发人员,我觉得很多东西都被我们带走了.没有更多Couch应用程序,设计文档,视图等?
2.可能,我在这里遇到了问题,有人可以告诉我如何使用Couch Base完成所有这些操作,就像我使用原装Couch DB一样吗?
3.除了Erlang memcached客户端之外,还有其他方法可以在Couch Base 1.8及更高版本中插入,读取或更新数据(使用erlang)吗?这是因为有数据序列化使得这些数据对同一项目中的其他技术无用,因为它们可能无法解码Erlang数据结构
4.在我们有PHP开发人员,C++,Erlang,Ruby的多语言项目中使用相同的Couch Base实例(数据库),使用数据序列化,我们应该如何访问和理解所有技术的数据?

有人协助指出从CouchDB到Couch Base的变化,解释为什么新的Couch Base与Memcached紧密相关,我们必须使用memcached客户端与CouchBase交谈.此外,如果有另一个Erlang-to-CouchBase SDK可以帮助我说出来自Couch Base的JSON(而不是序列化数据),我希望能够抓住它.

**编辑**
假设如下:CouchBase x86_64 1.8.0和Erlang OTP R15B.我需要在Couch Base中使用JSON数据,这样在大型多语言项目中,我们的应用程序可以运行相同的数据集,而不会产生序列化挑战.谢谢

Cyp*_*ien 1

CouchDB 和 Couchbase 之间有很大的区别,如果我是对的,Couchbase 使用 CouchDB 来存储数据,但不提供/呈现 CouchDB 的视图和其他不错的功能。

我浏览了 Couchbase 网站和 Couchbase 服务器文档中的不同 API(ruby、php),但没有找到有关视图或映射缩减的任何内容。请参阅文档:http ://www.couchbase.com/docs/couchbase-manual-1.8.pdf

Couchbase 看起来更像是一个带有由 CouchDB 支持的持久层的 memcache 服务器,也许它不符合您的需求。您可以存储的数据可以是从 int 到序列化数据(例如 JSON)的任何数据,但在这种情况下,您必须在所有端对其进行反序列化。

为什么使用 Couchbase 而不是 CouchDB?我没有使用过旧 Couchbase 版本的经验,但我知道这些名称,即使它们非常相似,也指的是不同的应用程序,如果它确实是您正在考虑的应用程序,也许值得进一步研究。

编辑 有趣的链接:http://damienkatz.net/2012/01/the_future_of_couchdb.html也阅读评论,其中有很多有趣的东西。

从评论中我了解到 Damien Katz 现在正在开发一个名为 Couchbase 的新项目,但这不是 CouchDB 的最后一个版本,而只是另一个 NoSQL 数据库。

因此,如果您习惯使用 CouchDB,则可以使用 CouchDB 的最新版本。或者,如果您想考虑切换到 Couchbase,请查看 2.0 的功能、路线图等,并调查它是否真的适合您的需求。