CouchDB – 介绍

CouchDB – 介绍


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

关系型数据库管理系统

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

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

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

OLAP

在线分析处理服务器 (OLAP) 基于多维数据模型。它允许管理人员和分析师通过对信息的快速、一致和交互式访问来深入了解信息。

NoSQL 数据库

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

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

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

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

键值存储– 这些数据库旨在以键值对的形式存储数据,这些数据库没有任何架构。在这些数据库中,每个数据值都包含一个索引键和该键的值。

示例 – BerkeleyDB、Cassandra、DynamoDB、Riak。

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

示例 – 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 中最外层的数据结构/容器。

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

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

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

  • 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。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁