下载APP 随时随地学编程
返回 首页

CouchDB教程

开始阅读
手册说明:

CouchDB教程


本教程提供了有关CouchDB的简要知识,设置它的过程以及使用cURL和Futon与CouchDB服务器交互的方法。 它还介绍如何创建,更新和删除数据库和文档。

适用人群

本教程帮助专业人士在大数据和NoSQL数据库,特别是文档存储做事业。

学习前提

在开始执行本教程之前,我们假设您对大数据,Hadoop有一个简短的了解,并且还对数据库有基本的了解。

CouchDB 介绍

数据库管理系统提供了数据存储和检索的机制。有两种主要类型的数据库管理系统,即:RDBMSNoSQL

RDBMS

RDBMS代表关系数据库管理系统。 RDBMS是SQL和所有现代数据库系统(如MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access)的基础。
关系数据库管理系统(RDBMS)是基于E.F.Codd介绍的关系模型的数据库管理系统(DBMS)。
RDBMS中的数据存储在称为表的数据库对象中。该表是相关数据条目的集合,它由列和行组成。它只存储结构化数据。

NoSQL数据库

NoSQL数据库(有时称为“不只是SQL”)是一种数据库,它提供一种机制来存储和检索数据,而不是关系数据库中使用的表格关系。这些数据库是无模式的,支持轻松复制,具有简单的API,最终一致,并且可以处理大量数据(大数据)。
NoSQL数据库的具有以下特征:
1、简单的设计
2、水平缩放
3、更好地控制可用性。
与关系数据库相比,NoSQL数据库使用不同的数据结构。它使NoSQL中的一些操作更快。给定NoSQL数据库的适用性取决于它必须解决的问题。这些数据库存储结构化数据和非结构化数据,如音频文件,视频文件,文档等。这些NoSQL数据库分为三种类型,下面对它们进行说明。
键值存储 - 这些数据库设计用于在键值对中存储数据,这些数据库不会有任何模式。在这些数据库中,每个数据值由索引的键和该键的值组成。
示例 - BerkeleyDB,Cassandra,DynamoDB,Riak。
列存储 - 在这些数据库中,数据存储在按数据列分组的单元格中,这些列进一步分组为列族。这些列族可以包含任意数量的列。
示例 - BigTable,HBase和HyperTable。
文档存储 - 这些是基于键值存储的基本思想开发的数据库,其中“文档”包含更复杂的数据。这里,为每个文档分配唯一的键,用于检索文档。它们用于存储,检索和管理面向文档的信息,也称为半结构化数据。
示例 - CouchDB和MongoDB。

什么是CouchDB?

CouchDB是由Apache软件基金会开发的一个开源数据库。重点是易于使用,拥抱网络。它是一个NoSQL文档存储数据库。
它使用JSON,存储数据(文档),使用java脚本作为其查询语言来转换文档,使用http协议为api访问文档,使用Web浏览器查询索引。它是一个多主应用程序在2005年发布,它成为一个apache项目在2008年。

为什么选择CouchDB?

CouchDB有一个基于HTTP的REST API,它有助于与数据库轻松地通信。而HTTP资源和方法(GET,PUT,DELETE)的简单结构很容易理解和使用。
当我们将数据存储在灵活的基于文档的结构中时,不需要担心数据的结构。
用户提供强大的数据映射,允许查询,组合和过滤信息。
CouchDB提供易于使用的复制,可以在数据库和机器之间复制,共享和同步数据。

数据模型

数据库是CouchDB中最外层的数据结构/容器。
每个数据库都是独立文档的集合。
每个文档都维护自己的数据和自包含模式。
文档元数据包含修订信息,这使得可以合并数据库断开时发生的差异。
CouchDB实现多版本并发控制,以避免在写入期间锁定数据库字段。

CouchDB的特点

文档存储
CouchDB是一个文档存储NoSQL数据库。文档是数据的主要单位,每个字段都是唯一命名的,并且包含各种数据类型的值,例如文本,数字,布尔值,列表等。在这些文档中,对文本大小或元素数量没有设置限制。
CouchDB提供了一个称为RESTful HTTP API的API,用于读取和更新(添加,编辑,删除)数据库文档。
下面给出的是样例JSON文档结构,后面跟着couchDB

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

ACID属性

CouchDB文件布局和承诺系统具有所有ACID属性。
一旦数据输入到光盘中,它将不会被覆盖。文档更新(添加,编辑,删除)遵循Atomicity,即它们将完全保存或根本不保存。数据库不会有任何部分保存或编辑的文档。
几乎所有这些更新都是序列化的,任何数量的客户端都可以读取文档而无需等待和中断。

压实

压缩是一种操作,通过删除未使用的数据为数据库提供额外的磁盘空间。在对特定文件执行压缩操作时,将创建一个扩展名为.compaction的文件,并将所有活动/实际数据复制(克隆)到该文件,当复制过程完成后,旧文件将被丢弃。在压缩期间数据库保持联机,并且允许所有更新和读取成功完成。

视图

CouchDB中的数据存储在具有单个隐式结构的半结构化文档中,但它是用于数据存储和共享的简单文档模型。如果我们想要以许多不同的方式查看我们的数据,我们需要一种方法来过滤,组织和报告尚未分解为表的数据。
为了解决这个问题,CouchDB提供了一个视图模型。视图是对数据库中的文档进行聚合和报告的方法,它是根据需要构建的,用于聚合,连接和报告数据库文档。由于视图是动态构建的并且不会影响底层文档,因此您可以根据需要拥有相同数据的任意数量的不同视图表示。

历史

CouchDB的过去的简介如下 :
CouchDB是用Erlang编程语言编写的。
它是由Damien Katz在2005年开始的。
CouchDB在2008年成为Apache项目。
CouchDB的当前版本是1.61。


目录

CouchDB Tutorial

CouchDB 安装
CouchDB Curl & Futon
CouchDB HTTP API
CouchDB 创建数据库
CouchDB 删除数据库
CouchDB 创建文档
CouchDB 更新文档
CouchDB 删除文档
CouchDB 附加文件

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }