📜  CouchDB-简介

📅  最后修改于: 2020-12-02 06:24:38             🧑  作者: Mango


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

关系数据库管理系统

RDBMS代表关系数据库管理系统。 RDBMS是SQL以及所有现代数据库系统(例如MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access)的基础。

关系数据库管理系统(RDBMS)是基于EF Codd引入的关系模型的数据库管理系统(DBMS)。

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

OLAP

在线分析处理服务器(OLAP)基于多维数据模型。它使管理人员和分析人员可以通过快速,一致和交互式的信息访问来洞察信息。

NoSQL数据库

NoSQL数据库(有时称为“不仅SQL”)是一种数据库,它提供了一种存储和检索关系数据库中使用的表格关系以外的数据的机制。这些数据库是无模式的,支持简单的复制,具有简单的API,最终是一致的,并且可以处理大量数据(大数据)。

NoSQL数据库的主要目标是具有以下功能-

  • 设计简单
  • 水平缩放,以及
  • 更好地控制可用性。

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

关键值存储-这些数据库旨在将数据存储在关键值对中,并且这些数据库将没有任何架构。在这些数据库中,每个数据值都包含一个索引键和该键的值。

示例-BerkeleyDB,Cassandra,DynamoDB,Riak。

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

示例-BigTable,HBase和HyperTable。

文档存储-这些是基于键值存储的基本概念开发的数据库,其中“文档”包含更复杂的数据。在此,为每个文档分配一个唯一的密钥,该密钥用于检索该文档。它们被设计用于存储,检索和管理面向文档的信息,也称为半结构化数据。

示例-CouchDB和MongoDB。

什么是CouchDB?

CouchDB是由Apache软件基金会开发的开源数据库。重点在于网络的易用性。这是一个NoSQL文档存储数据库。

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

为什么选择CouchDB?

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

  • 由于我们将数据存储在基于文档的灵活结构中,因此无需担心数据的结构。

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

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

资料模型

  • 数据库是CouchDB中最外部的数据结构/容器。

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

  • 每个文档都维护自己的数据和独立的架构。

  • 文档元数据包含修订信息,这使合并断开数据库时发生的差异成为可能。

  • CouchDB实现了多版本并发控制,以避免在写入过程中锁定数据库字段。

CouchDB的功能:减少内容

文件储存

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

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

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

Json文件结构

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

酸性质

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

一致性-一旦提交了CouchDB中的数据,该数据将不会被修改或覆盖。因此,CouchDB确保数据库文件将始终处于一致状态。

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

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

如果在提交标头时发生故障,则将保留先前相同标头的有效副本,以确保所有先前提交的数据的一致性。除标头区域外,在崩溃或断电后无需进行一致性检查或修复。

压实

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

观看次数

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

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

历史

  • CouchDB用Erlang编程语言编写。
  • 它由Damien Katz于2005年创立。
  • CouchDB在2008年成为Apache项目。

CouchDB的当前版本为1.61。