CouchDB - 简介

数据库管理系统提供存储和检索数据的机制.有三种主要类型的数据库管理系统,即RDBMS(关系数据库管理系统),OLAP(在线分析
处理系统)和NoSQL.

RDBMS

RDBMS代表关系数据库管理系统. RDBMS是SQL的基础,适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access.

关系数据库管理系统(RDBMS)是一个数据库管理系统(DBMS),它基于EF Codd引入的关系模型.

RDBMS中的数据存储在名为 tables 的数据库对象中.该表是相关数据条目的集合,它由列和行组成.它仅存储结构化数据.

OLAP

在线分析处理服务器(OLAP)基于多维数据模型.它允许经理和分析师通过快速,一致和交互式的信息访问来了解信息.

NoSQL数据库

NoSQL数据库(有时称为Not Only SQL)是一种数据库,它提供了一种机制来存储和检索关系数据库中使用的表格关系以外的数据.这些数据库是无架构的,支持轻松复制,具有简单的API,最终一致,并且可以处理大量数据(大数据).

NoSQL数据库的主要目标是具有以下 :

  • 设计简单,

  • 水平缩放,

  • 更好地控制可用性.

与关系数据库相比,NoSQL数据库使用不同的数据结构.它使NoSQL中的一些操作更快.给定NoSQL数据库的适用性取决于它必须解决的问题.这些数据库存储结构化数据和非结构化数据,如音频文件,视频文件,文档等.这些NoSQL数据库分为三种类型,它们将在下面解释.

Key-价值商店 : 这些数据库设计用于以键值对存储数据,这些数据库不具有任何模式.在这些数据库中,每个数据值都包含一个索引键和该键的值.

示例 :  BerkeleyDB,Cassandra,DynamoDB,Riak.

Column Store : 在这些数据库中,数据存储在按数据列分组的单元格中,这些列进一步分组为列族.这些列族可以包含任意数量的列.

示例 :  BigTable,HBase和HyperTable.

文档存储 : 这些是基于键值存储的基本思想开发的数据库,其中"文档"包含更复杂的数据.这里,为每个文档分配一个唯一的密钥,用于检索文档.它们用于存储,检索和管理面向文档的信息,也称为半结构化数据.

示例 :  CouchDB和MongoDB.

什么是CouchDB?

CouchDB是由Apache软件基金会开发的开源数据库.重点是易用性,拥抱网络.它是一个NoSQL文档存储数据库.

它使用JSON,存储数据(文档),java脚本作为其查询语言来转换文档,http协议用于api访问文档,使用Web浏览器查询索引.它是2005年发布的多主应用程序,并于2008年成为一个apache项目.

为什么选择CouchDB?

  • CouchDB有一个基于HTTP的REST API,可以帮助您轻松地与数据库进行通信. HTTP资源和方法的简单结构(GET,PUT,DELETE)易于理解和使用.

  • 当我们将数据存储在灵活的文档中时 - 基于结构,无需担心数据的结构.

  • 为用户提供强大的数据映射,允许查询,组合和过滤信息.

  • CouchDB提供易于使用的复制,您可以使用它复制,共享和同步数据库和计算机之间的数据.

数据模型

  • 数据库是CouchDB中最外层的数据结构/容器.

  • 每个数据库都是独立文档的集合.

  • 每个文档都维护自己的数据和自包含模式.

  • 文档元数据包含修订信息,这样可以合并发生的差异数据库是disconnectcte d.

  • CouchDB实现多版本并发控制,以避免在写入期间锁定数据库字段.

CouchDB的功能:减少内容

文档存储

CouchDB是一个文档存储NoSQL数据库.它提供了存储具有唯一名称的文档的功能,还提供了一个名为RESTful HTTP API的API,用于读取和更新(添加,编辑,删除)数据库文档.

在CouchDB中,文档是数据的主要单位,它们还包括元数据.文档字段具有唯一名称,包含不同类型的值(文本,数字,布尔值,列表等),文本大小或元素数没有设置限制.

文档更新(添加,编辑,删除)遵循原子性,即它们将被完全保存或根本不保存.数据库不会有任何部分保存或编辑的文档.

Json文档结构

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

ACID属性

CouchDB包含ACID属性作为其功能之一.

Consistency : 当CouchDB中的数据一旦提交,则不会修改或覆盖此数据.因此,CouchDB确保数据库文件始终处于一致状态.

CouchDB读取使用多版本并发控制(MVCC)模型,因此客户端将看到从读取操作的开始到结束的数据库的一致快照.

每当更新文档时,CouchDB将数据刷新到磁盘中,并且更新的数据库头写入两个连续且相同的块组成文件的前4k,然后同步刷新到磁盘.刷新期间的部分更新将被丢弃.

如果在提交标头时发生故障,将保留先前相同标头的幸存副本,以确保所有先前提交的数据的一致性.除标题区域外,永远不需要在崩溃或电源故障后进行一致性检查或修复.

压缩

每当空间中的空间数据库文件在一定程度上被浪费,所有活动数据都将被复制(克隆)到新文件中.完成复制过程后,旧文件将被丢弃.所有这些都是通过压实过程完成的.压缩期间数据库保持在线状态,允许所有更新和读取成功完成.

视图

CouchDB中的数据以半结构化存储具有单独隐式结构的灵活文档,但它是用于数据存储和共享的简单文档模型.如果我们想以多种不同的方式查看我们的数据,我们需要一种方法来过滤,组织和报告尚未分解为表格的数据.

为了解决这个问题,CouchDB提供了视图模型.视图是聚合和报告数据库中文档的方法,可根据需要构建,以聚合,加入和报告数据库文档.由于视图是动态构建的,并且不会影响基础文档,因此您可以根据需要使用相同数据的多个不同视图表示.

历史记录

  • CouchDB是用Erlang编程语言编写的.

  • 它是由Damien Katz在2005年创建的.

  • CouchDB于2008年成为Apache项目.

当前版本的CouchDB为1.61.