CouchDB 教程

 

CouchDB教程

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。“Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。

CouchDB 是由 Apache 软件基金会开发的开源 NoSQL 数据库,用 Erlang 语言编写。

数据库有两种类型: RDBMS(遵循SQL) 和 NoSQL。

 

1. RDBMS 关系数据库管理系统

RDBMS 基于 E.F. Codd 引入的关系模型。它是SQL的基础,大多数数据库系统都遵循RDBMS。这些数据库是: Oracle,MySQL,MS SQL Server,IBM DB2和Microsoft Access等。

在RDBMS中,数据存储在表等数据库对象中。表是相关数据条目的集合,并且包含列和行。它仅存储结构化数据。

 

2. NoSQL 数据库

NoSQL数据库是其他类型的数据库,除了在表1中使用的表格格式外,它还提供了一种存储和检索数据的机制。 RDBMS。

NoSQL数据库是无架构的,一致的,支持简单的复制,具有简单的API并可以处理大量数据。

NoSQL数据库的主要目标是:

  • 设计的简单性。
  • 水平缩放。
  • 对可用性进行更严格的控制。

NoSQL数据库比RDBMS更快,因为与关系数据库相比,它使用不同的数据结构。 NoSQL数据库既可以存储结构化数据也可以存储非结构化数据,例如音频文件,视频文件,文档等。

NoSQL数据库可以根据其数据存储性质分为三种类型:

  • 键值存储
  • 列存储
  • 文档存储

CouchDB沙发床简介1

 

2.1 键值存储

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

键值存储数据库的流行示例有: Cassandra,DynamoDB,BerkeleyDB,Riak等。

 

2.2 列存储

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

列存储数据库的流行示例是: BigTable,HBase和HyperTable等。

 

2.3 文档存储

这些数据库遵循键值存储的基本思想,其中"文档"包含复杂数据,并且每个文档都分配有唯一的键,用于检索文档。

这些数据库用于存储,检索和管理面向文档的信息,也称为半结构化数据。

文档存储数据库的流行示例是: CouchDB,MongoDb等。

 

3. 什么是CouchDB

CouchDB是开源NoSQL数据库,其重点是易用性。它是由Apache开发的。它与Web完全兼容。 CouchDB使用JSON存储数据,使用JavaScript作为其查询语言来转换文档,使用MapReduce和使用HTTP作为API。

CouchDB是2005年发布的多主应用程序,它在2008年成为apache项目。

 

4. 为什么使用CouchDB

Apache CouchDB是最新的数据库之一。 CouchDB具有无模式的文档模型,该模型更适合于普通应用程序。查询数据非常强大。

使用CouchDB的主要原因是什么?

CouchDB易于使用。有一个词来描述CouchDB"放松"。这也是CouchDB官方徽标的代名词。

" Apache CouchDB已启动。请放松。"

CouchDB为什么选择ouchdb 1

CouchDB具有基于HTTP的REST API,这使得与数据库的通信非常容易。

CouchDB具有易于理解和使用的HTTP资源和方法(GET,PUT,DELETE)的简单结构。

在CouchDB中,数据存储在基于文档的灵活结构中,因此无需担心数据的结构。

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

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

 

5. CouchDB数据模型

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

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

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

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

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

CouchDB体系结构:

CouchDB为什么在沙发上2

MongoDB与CouchDB 很相似,他们都是NoSQL数据库,都采用文档型存储,数据存储格式都是JSON型的,而且都使用JavaScript进行操作,支持 Map/Reduce。但是其实二者有着 ...