Couchbase在多大程度上取代了Memcached

时间:2013-06-12 13:08:15

标签: c nosql memcached couchbase libmemcached

Official couchbase documentation说。

  

“如果您已经有一个使用Memcached协议的应用程序   然后您可以立即开始使用Couchbase服务器。如果是的话,你   可以简单地将您的应用程序指向此服务器,就像您一样   其他memcached服务器。没有代码更改或特殊库   需要,应用程序的行为将完全像对待   标准的memcached服务器。没有客户了解任何事情   它,数据被复制,持久化,集群可以   完全透明地扩大或缩小。“

我们已经有一个基于C的应用程序,它使用libmemcached C API处理memcached。 因为我们想要持久性(主要是),我们想转移到couchbase。 我们看到了前面提到的Couchbase报价并尝试了这个(使用Couchbase存储桶),这是一个令人愉快的惊喜。它就像那样工作。为此+1。

我们发现还存在Couchbase C api,以下是问题,

  1. 如果libmemcached API足以使用Couchbase,那么Couchbase C API会提供什么?
  2. (继续)使用(现有的)libmemached API与Couchbase服务器的Couchbase类型桶进行通信有什么缺点?
  3. 升级我们的应用程序以使用Couchbase C api与Couchbase服务器通信有什么好处?

1 个答案:

答案 0 :(得分:3)

  

1)如果libmemcached API足以使用Couchbase,那该怎么办?   Couchbase C API提供?

当然,couchbase通过新的操作扩展了memcached协议,如触摸,观察,获取锁定,解锁,从副本读取等等。其中一些虽然可以在libmemcached中实现(我刚刚为touch命令做了补丁) ),不受vanilla memcached服务器的支持,因此在libmemcached中测试和维护会更困难。其他命令,例如observe,从副本读取,根本不能用libmemcached实现。 Couchbase的另一组API是对数据库索引的查询查询,使用map / reduce构建,libcouchbase能够执行此操作。

  

2)(继续)使用(现有)的缺点是什么   libmemached API与Couchbase类型的Couchbase服务器桶交谈?

Libmemcached,就像您可以找到的任何其他memcached客户端一样,被视为“哑”或“遗留”客户端,而不是“智能”客户端。不同之处在于客户端是否了解群集拓扑。传统客户端必须通过群集中的单个入口点或进行某种平衡(如循环法)。默认情况下,它将使用服务器端代理,它可以识别拓扑,并且可以在此节点不拥有密钥的情况下重新路由。因此,当网络/ CPU /内存容量足以满足请求时,您可能会达到此代理的限制(尽管可以在客户端设置此代理)。智能客户端了解群集拓扑并遵循其更改,以便它可以消除密钥的重新路由。

  

3)升级我们的应用程序使用有什么好处   Couchbase C api与Couchbase服务器交谈?

您将能够访问memcached的其他API和扩展API。此外,Couchbase客户端可以优化网络使用。