📜  Apache CouchDB 简介

📅  最后修改于: 2021-10-19 06:12:17             🧑  作者: Mango

Apache CouchDB 由 Apache Software Foundation 开发,最初于 2005 年发布。CouchDB 是用 Erlang 编写的。它是一个开源数据库,使用各种不同的格式和协议来存储、传输和处理其数据。它使用 JSON 来存储数据,使用 MapReduce 作为其查询语言的 JavaScript,以及作为 API 的 HTTP。文档是 CouchDB 中的主要数据单元,它们还包括元数据。文档字段被唯一命名并包含不同类型的值,并且对文本大小或元素数量没有设置限制。

历史

CouchDB 是用 Erlang 编程语言编写的。它由 Damien Katz 于 2005 年启动。CouchDB 于 2008 年成为 Apache 项目。CouchDB 的当前版本是 1.61。

建筑学

CouchDB 架构

CouchDB 的架构描述如下:

  1. CouchDB 引擎:它基于 B 树,在其中,数据通过键或键范围访问,这些键或键范围直接映射到底层 B 树操作。它是管理存储内部数据、文档和视图的系统的核心。
  2. HTTP 请求:用于创建索引并从文档中提取数据。它是用 JavaScript 编写的,允许创建由 MapReduce 作业组成的临时视图。
  3. 文档:存储大量数据。
  4. 副本数据库:用于将数据复制到本地或远程数据库以及同步设计文档。

CouchDB 的特点

CouchDB 的特性包括:

  1. 复制:它提供了最简单的复制形式,没有其他数据库可以如此简单地复制。
  2. 文档存储:它是一个遵循文档存储的 NoSQL 数据库,其中每个字段都有唯一的名称,并包含各种数据类型的值,例如文本、数字、布尔值、列表等。
  3. ACID 属性: CouchDB 文件布局遵循 ACID 属性的所有功能。
  4. 安全性:它还提供数据库级别的安全性,权限分为读者和管理员,读者可以对数据库进行读写。
  5. Map/Reduce: CouchDB 流行的主要原因是一个 map/reduce 系统。
  6. 身份验证: CouchDB 可帮助您通过类似 Web 应用程序的会话 cookie 保持身份验证打开。
  7. 专为离线构建: CouchDB 可以复制到智能手机等设备,这些设备具有离线功能并在设备重新在线时为您处理数据同步。
  8. 最终一致性: CouchDB 保证最终一致性以提供可用性和分区容错性。
  9. HTTP API:所有项目都有一个通过 HTTP 公开的唯一 URI(唯一资源标识符)。它对所有资源的四种基本 CRUD(创建、读取、更新、删除)操作使用 HTTP 方法,如 POST、GET、PUT 和 DELETE。

CouchDB 的优势

CouchDB 的优点包括:

  1. HTTP API 用于轻松通信。
  2. 它用于存储任何类型的数据。
  3. ReduceMap 允许优化数据的组合。
  4. CouchDB 的结构非常简单
  5. 快速索引和检索。

CouchDB 的缺点

CouchDB 的缺点包括以下几点:

  1. CouchDB 占用的开销空间很大,这是与其他数据库相比的主要缺点。
  2. 任意查询是昂贵的。
  3. 与大多数替代方案相比,CouchDB 有一些额外的空间开销。
  4. 对庞大数据集的临时视图非常慢。
  5. 它不支持交易
  6. 大型数据库的复制可能会失败。