Couchdb 简明教程
CouchDB - Introduction
数据库管理系统提供存储和检索数据的机制。数据库管理系统主要有三种类型,即 RDBMS(关系数据库管理系统)、OLAP(联机分析处理系统)和 NoSQL。
RDBMS
RDBMS 表示关系数据库管理系统。RDBMS 是 SQL 和所有现代数据库系统(例如 MS SQL Server、IBM DB2、Oracle、MySQL 和 Microsoft Access)的基础。
关系数据库管理系统 (RDBMS) 是一个数据库管理系统 (DBMS),其基于 E. F. Codd 引入的关系模型。
RDBMS 中的数据存储在名为 tables 的数据库对象中。表是相关数据项的集合,并且由列和行组成。它只存储结构化数据。
NoSQL Databases
NoSQL 数据库(有时称为非 SQL)是除关系数据库中使用的表格关系以外提供存储和检索数据的机制的数据库。这些数据库没有架构,支持简单的复制,拥有简单的 API,最终一致,并且能处理大量数据(大数据)。
NoSQL 数据库的主要目标是拥有以下内容 −
-
Simplicity of design,
-
Horizontal scaling, and
-
Finer control over availability.
与关系数据库相比,NoSQL 数据库使用不同的数据结构。它让一些操作在 NoSQL 中更快。给定 NoSQL 数据库的适用性取决于它必须解决的问题。这些数据库存储结构化数据和非结构化数据,如音频文件、视频文件、文档等。这些 NoSQL 数据库分为三类,如下所述。
Key-value Store − 这些数据库旨在将数据存储在键值对中,并且这些数据库没有任何架构。在这些数据库中,每个数据值都包含一个已编制索引的键和该键的一个值。
示例 − BerkeleyDB、Cassandra、DynamoDB、Riak。
Column Store − 在这些数据库中,数据存储在分组为数据列的单元格中,并且这些列进一步分组到列族中。这些列族可以包含任意数量的列。
示例 − BigTable、HBase 和 HyperTable。
Document Store - 这是基于键值存储的基本理念开发的数据库,其中“文档”包含更多复杂的数据。此处,每个文档都会被分配一个唯一键,这个键用于检索文档。这些文档被设计用于存储、检索和管理面向文档的信息,也称为半结构化数据。
示例 − CouchDB 和 MongoDB。
What is CouchDB?
CouchDB 是由 Apache 软件基金会开发的一个开源数据库。其重点在于易用性,涵盖网络。它是一个 NoSQL 文档存储数据库。
它使用 JSON 来存储数据(文档),使用 JavaScript 作为查询语言来转换文档,使用 http 协议,通过 api 访问文档,使用 web 浏览器查询索引。它是一个多主应用,发布的时间是 2005 年,并且在 2008 年成为了一个 Apache 项目。
Why CouchDB?
-
CouchDB 有一个基于 HTTP 的 REST API,这有助于轻松地与数据库通信。并且 HTTP 资源和方法(GET、PUT、DELETE)的简单结构易于理解和使用。
-
当我们在灵活的基于文档的结构中存储数据时,无需担心数据的结构。
-
向用户提供功能强大的数据映射,该映射允许查询、组合和筛选信息。
-
CouchDB 提供易于使用的复制功能,你可以使用该功能复制、共享和同步数据库和机器之间的的数据。
Data Model
-
数据库是 CouchDB 中最外层的容器/数据结构。
-
每个数据库都是一个独立文档的集合。
-
每个文档维护自己的数据和自包含模式。
-
文档元数据包含修订信息,这使得在数据库断开连接时合并出现的差异成为可能。
-
CouchDB 实施多版本并发控制,以避免在写入期间锁定数据库字段。
Features of CouchDB:Reduce the Content
Document Storage
CouchDB 是一个 NoSQL 文档存储数据库。它提供了存储具有唯一名称的文档的功能,并且还提供了一个称为 RESTful HTTP API 的 API,用于读取和更新(添加、编辑、删除)数据库文档。
在 CouchDB 中,文档是数据的基本单位,它们也包括元数据。文档字段具有唯一名称,并且包含各种类型的属性值(文本、数字、布尔值、列表等);文本大小或元素数量没有固定的限制。
文档更新(添加、编辑、删除)遵循原子性,即它们将被完全保存或根本不会被保存。数据库将不会有任何部分保存或编辑的文档。
ACID Properties
CouchDB 包含 ACID 属性作为其一项功能。
一致性 − 当 CouchDB 中的数据被提交一次时,就不允许修改或覆盖该数据。因此,CouchDB 确保数据库文件将始终处于一致的状态。
CouchDB reads 使用多版本并发控制 (MVCC) 模型,因此客户端将从读取操作的开始到结束看到数据库的一致快照。
每当更新文档时,CouchDB 便会将数据写入到磁盘中,并将更新后的数据库标头写入两个连续且相同的块中,以构成文件的前 4k,然后同步写入磁盘。写入期间的部分更新会丢弃。
如果写入标头时出现故障,先前相同的标头副本将继续保留,从而保证所有先前提交数据的一致性。除了标头区域之外,在崩溃或断电后永远不需要执行一致性检查或修复。