Couchbase Server 是一款面向互联网应用的文档型数据库。它具有松散的数据组织方式,良好的扩展性,稳定的高性能和7X24不间断服务能力。Couchbase Server具有下述优点:
松散数据组织的另一个好处就是这种方式很适合表现现实世界中的事物。JSON文档支持嵌套结构,而且field也代表着文档间的关系,因此合理应用JSON文档就可以在你的应用中还原数据的相互关系。
良好的扩展性
在Couchbase Server中你可以简单地就扩展你的应用,无论是在一个集群内还是在多个集群不同数据中心间。你可以通过向Couchbase Server添加更多成员的方式来解决增长的用户和数据带来的压力,而且不需要对当前的服务或应用进行任何改变。只需要鼠标轻轻一点,你就可以迅速在你的Couchbase Server集群之中保持负载和数据的均匀分布。
Couchbase Server提供自动数据分片和运行中负载均衡的服务,这可以让你按需随时调整集群大小。Couchbase Server 2.0开始提供的跨数据中心复制功能则可以让数据从其它数据中心自动移动到接近用户的数据中心。
稳定的高性能
Couchbase Server一开始就是为高并发数据使用和稳定的高吞吐量而设计的。它提供亚毫秒级别的响应时间以保证你的应用有良好的用户体验。而Couchbase Server通过提供稳定的高吞吐量,你可以使用更少的服务器来支持更多的用户。服务器也会自动把负载分散到集群之中,这样每一台服务器都不会成为瓶颈,因此保证了稳定的性能。
不间断服务
跨数据中心复制和自动失效转移等功能特性确保了无论是集群之内还是集群之间数据的持久性。
Couchbase Server拥有的这些特性使它可以支持终端用户需求低延迟和高吞吐的网络应用。网络应用可以在Couchbase集群内快速获取数据,开发者可以增加服务器以扩展应用。
Couchbase Server 和 NoSQL
NoSQL数据库具有无需schema就可以储存数据的特点。在Couchbase Server之中,你既可以通过键值对的形式存储,也可以通过JSON文档存储。数据库管理系统不需要用预先定义的schema来审核数据。这种schema-less的天性让Couchbase Server支持通过在集群中增加服务器来扩展服务能力以应对不断增长的数据和I/O负载,而且还不需要改动应用。相对地,关系型数据库的扩展需要提高CPU,内存和磁盘的性能。
关系型数据库只会在预先定义过的关系结构下储存数据。一个关系就是一个由行组成的表,每一行又由若干列组成。在一个关系内横跨行的列是连贯的。表可以通过跨表引用连接起来。比如说一张表的每行储存居住在城镇中的不同居民的信息。另一张表的每行储存家长,孩子以及他们的关系。前两个field可以是索引citizen表的关键字,第三个field描述前两个field的关系,比如说父亲或母亲。
架构和构思
为了理解Couchbase Server的结构和设计,你首先需要理解组成单一Couchbase Server个体的组件和系统,以及组成Couchbase 集群的组件和系统。
后文会提供理解Couchbase Server数据库高速易扩展性质的关键信息和构思,以及不同组件如何协同工作来支持这个高性能数据库。
Nodes 和 Clusters
Couchbase Server既可以单独设置使用,也可以作为集群设置使用。在集群之中Couchbase Server连接在一起,数据在集群之内分散存储。
在这个叙述之中:
一个在机器上运行着的Couchbase Server实例,无论是实体机器、虚拟机器、EC2或者其它环境。
所有Couchbase Server实例都是相同的,提供相同功能、接口和系统,包含相同的组成部件。
一个cluster是一个包含一个或多个Couchbase Server实例而且作为一个逻辑上的cluster设置的集群。所有cluster内的node都是相同的,提供相同的功能。每个节点都可以管理cluster并提供其统计数据和操作信息。用户数据通过vBucket系统存储在整个cluster之中。
集群操作完全是水平的。如果需要扩张cluster的大小,只需要添加node即可。这其中不包含亲子关系或者阶级结构。这意味着Couchbase Server是线性扩展,无论是在储存容量、性能还是扩展性上。
Cluster Manager
Couchbase Cluster内的每一个Node都包含Cluster Manager组件。这个组件负责cluster内的以下工作:
Cluster 管理
Node 运营
Node 监控
数据采集和聚合
运行时日志记录
- 多租户
运营和访问的安全控制
用于重定向请求的客户代理服务
Cluster Manager需要通过客户端访问特定的端口访问管理接口(详情参看 Administration Tools)。其余端口用于node内部通讯。
数据存储
Couchbase Server使用buckets来提供数据管理服务。buckets是为数据准备的互相隔离的虚拟容器。一个bucket就是一个cluster内物理资源的一个逻辑上的分组,可以通过cluster被多个客户使用。Buckets提供了一种安全的组织、管理和分析数据资源的机制。
Couchbase Server中有两类bucket: 1) memcached buckets,以及 2) couchbase buckets.这两种bucket让你可以选择仅把数据缓存在内存里,还是既缓存在内存里也为了持久性同步到硬盘上。当你建立Couchbase Server时可以选择使用哪种bucket:
Bucket Type | Description |
---|
Couchbase | 提供高可用并可动态重构的分布式数据存储,同时兼顾持久性和备份服务。此类型bucket兼容memcached开源分布式键值对缓存协议,因为就是从其中发展出来的。 |
Memcached | 提供直接寻址、分布式(可水平扩展)、内存中、键值对的缓存。Memcached类型的bucket应与关系型数据库技术协同使用——把频繁访问的热数据缓存在内存之中以减少应用对数据库的查找。 |