> For the complete documentation index, see [llms.txt](https://couchbase.shujuwajue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://couchbase.shujuwajue.com/chapter1.md).

# Couchbase 简介

Couchbase，是MemBase与couchDb这两个NoSQL数据库的合并的产物，是一个分布式的面向文档的NoSQL数据库管理系统,即拥有CouchDB的简单和可靠以及Memcached的高性能。

Couchbase Server 可以被用作一个

* 管理缓存层
* key-value 存储
* 文档型数据库

Couchbase 是一个高性能、分布式、面向文档的NoSQL数据库。Couchbase 提供了一些和其他一些领先的NoSQL数据库相似的功能或者增强功能．

* 灵活的Schema JSON 文档

[**官网**](https://legacy.gitbook.com/book/xiaoxiami/couchbase/edit#)**关于Couchbase和传统RMDB的对比**

| Couchbase Server                                  | Relational databases |
| ------------------------------------------------- | -------------------- |
| Buckets                                           | Databases            |
| Buckets or Items (with type designator attribute) | Tables               |
| Items (key-value or document)                     | Rows                 |
| Index                                             | Index                |

## 可伸缩性(Scalability)

* 添加和删除节点是一键式解决方案而不会导致停机时间。所有节点都是相同类型的，这就排除了配置不同类型节点的需求。
* 自动分片（Auto-sharding），它提供了跨集群的自动负载平衡，在过载服务器上没有热点。
* 跨数据中心复制功能对于CoucBASE是独有的，并使CoucBASE在跨地域上可扩展。

## 自动分片集群技术

当从CoucBASE集群添加或删除新服务器时，数据会自动重新分配到集群中的节点，并在服务客户端请求时不停机重新平衡。均匀的过程在集群中自动分发数据称为自动分片（Auto-sharding）。如果更多的RAM和I/O容量是需要，只需添加服务器即可。在集群节点之间均匀均衡的情况下，数据是连续可用的。客户端请求被路由到使用数据局部性的最接近客户端的服务器。当从靠近客户端的服务器提供数据时，数据局部性提高响应时间并减少网络流量。

## 高性能 高吞吐量 和低延迟

延迟可以以不同的形式定义，但都意味着延迟：例如，接收请求的延迟。数据或数据传输到另一个服务器的复制延迟。吞吐量被定义为数据速率, 通过网络传输。

Couchbase是为灵活的数据管理需求设计的交互式Web应用程序，提供高吞吐量和低延迟。虽然大多数NoSQL数据库提供了快速响应，但Couchbase的毫秒延迟在读写操作上是一致的，并且在不同的工作负载之间是一致的。一些其他NoSQL数据库的延迟，如MongoDB和Apache CasdRRA随着ops/sec(每秒操作数)的增加而增加，但Couchbase的甚至在高负荷时延迟仍然很低。虽然大多数NoSQL数据库提供了高吞吐量，但Couchbase的高吞吐量下的读写操作的是一致的。Apache Casdand，MangoDB和Couchbase性能基准测试（<http://www.slideshare.net/renatko/couchbase-performance-benchmarking)，Couchbase表现出最低的延迟和最高的吞吐量。>

Couchbase提供了内置memcache-based缓存技术。memcache是什么?Memcache是内存（RAM）中的一个缓存，用于临时存储（也称为缓存）频繁使用的数据。使用Memcache用于优化磁盘I/O;如果数据是从RAM中获得的，则不必访问磁盘。Memcache也用于优化CPU，CPU密集型计算结果存储在高速缓存中以避免重新计算。什么是“频繁使用的数据”是由服务器根据数据请求的数量和频率来确定的服务器与磁盘协调，以保持足够的RAM以低延迟等待传入的请求，以实现高性能。当频繁使用的信息被重新请求时，它将从memcache而不是从数据库中获取。Memcache提高响应时间,从而减少延迟和高吞吐量。通过毫秒级的读写性能,Couchbase服务器能够每秒服务器数十万个OPS。

Couchbase在RAM中的对象级高速缓存中保持一组数据以供客户端访问，从而异步地从RAM到磁盘保持数据。只附加存储层将数据连续地附加到文件的末尾，从而提高性能。首先使用每个文档提交将更新提交到RAM并随后提交到磁盘。当高速缓存不提供所需数据时，高速缓存缺失被定义为数据库磁盘的直接访问。

## 集群高可用性

Couchbase在集群情况下保持高可用，虽然大多数NoSQL数据库提供高可用性，但Couchbase比其他数据库具有以下优点：

* 跨数据中心复制
* 即使在整个数据中心失败的情况下也提供高可用性。
* 软件升级是在不关闭Couchbase服务器的情况下在线完成的。
* 硬件升级是在线完成的，不需要关闭Couchbase服务集群。
* 维护操作，如压缩，也是在服务在线的情况下可以完成。

> 说白了就是在不需要停机的情况下，就可以完成各种运维操作

## 跨数据中心复制

数据复制在集群中的不同节点上存储多个数据副本，以获得持久性和高可用性。持久性意味着，如果由于机器故障或一些其他原因如电源故障而丢失数据的一个副本，则数据的另一个副本仍然可用。高可用性意味着，从集群中的一个单个节点获取失败，从另一个拷贝的数据节点获取，而不治愈服务down机。除了集群内的复制（集群内复制）之外，Couchbase2.0还添加了一种称为跨数据中心复制（XDCR）的特征，其中数据在数据中心上被复制到另一个数据中心中的集群/s，该数据中心可以位于地理位置上的远程位置。XDCR还提供了**数据局部性**。数据局部性是数据与客户端的紧密性。如果每个客户端能够访问接近客户端的节点，则不需要通过网络传输数据。如果数据在靠近客户端的数据中心可用，则从数据中心获取数据，而不是从远程数据中心获取网络。通过网络传输数据会导致延迟（延迟）和带宽需求的增加。数据局部性提高响应时间。图中说明了跨域数据中心复制，其中JSON文档A使用Datacenter1中内部集群来复制，并且JSON文档B使用Datacenter2上的内部集群来复制。JSON文档也可以使用XDCR在Datacenter2上复制，JSON文档B也可以使用Datacenter1上的XDCR复制。副本的数量可以根据需求而变化。

![](https://1765041844-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT305nNllmk6-_S9R%2F-LfnTAFhMTUOa5-N_wvs%2F-LfnTMxk7rmcAcBa5jNT%2F1.png?generation=1558862988130033\&alt=media)XDCR在数据中心之间单向或双向地复制数据。通过双向复制下，可以在数据中心中添加数据并从另一个数据中心读取数据。

## 数据局部性(Data Locality)

数据局部性是CoucBASE服务器与它的客户端的紧密性。跨数据中心复制使得跨地域复制数据是可行的。从最靠近客户端的数据中心服务客户端，从而减少网络延迟。

## 支持常用的面向对象语言

Java, PHP, Ruby, and C等等

## 管理和监控图形用户界面
