初窥NoSQL世界 开源CouchDB新手入门

数据库 其他数据库
NoSQL现在已经变成在IT界中十分热门的话题了,在本文中,将为你介绍NoSQL中的一员CouchDB的基本知识,带你开始走入NoSQL丰富多彩的世界。

NoSQL现在已经变成在IT界中十分热门的话题了,在本文中,将为你介绍NoSQL中的一员CouchDB的基本知识,带你开始走入NoSQL丰富多彩的世界。

 

什么是NoSQL

NoSQL(是not only SQL的缩写,也有说法认为是non-relational,即非关系型数据库)其实是不使用传统的关系数据库模型,而是使用如key-value存储、文档型的、列存储、图型数据库、xml等方式存储数据的模型统称。之所以不使用传统的范式,主要是在于它们存储数据的方式发生了变化。例如,当你需要存储发票的数据时,在传统的关系数据模型中,需要设计表的结构,然后使用服务器端语言将其转化为实体对象,再传递到用户端(这就是所谓的ORM对象关系映射),而在NoSQL中,你只要保存发票数据就可以了。 NoSQL不需要预先设计表和结构就可以储存新的数值。当然,请记住,NoSQL不是银弹。如果你的项目中要保存的数据的确需要关系型数据库模型才能完成,那么应该坚持使用关系型数据库。

NoSQL的特点

NoSQL的出现主要是为了解决数据库读写性能的问题,随着越来越庞大的Web应用系统的出现,如SNS,微博等应用需要大量对数据进行读和写,并且要求进行分布式的部署,而传统的关系数据模型在大数据访问量和分布式环境下,由于关系模型中经常要对多表进行连接操作,因此性能有时会有所降低,所以NoSQL的强调的是“非关系型”数据,NoSQL 数据存储不需要固定的表结构,通常也不存在连接 操作。在大数据存取上具备关系型数据库无法比拟的性能优势。

在http://nosql-database.org/中,对NoSQL的描述是:非关系的,分布式的,开源的而且可以垂直扩展的。并且大多数NoSQL数据库具有以下特点:Schema-free,方便的支持数据冗余,简单的API,基于最终一致性(eventually consistent)和BASE原则(而非ACID原则)。目前,Google 的 BigTable 与 Amazon 的 Dynamo 是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了广泛认同。

#p#

CouchDB介绍

CouchDB是Apache组织发布的一款NoSQL开源数据库项目,是面向文档类型的Nosql。它由Erlang编写而成,使用JSON格式去保存数据。所谓文档数据库,并不是说它只能存储文本。CouchDB的字段只有三个:文档ID、文档版本号和内容。内容字段可以看到是一个text类型的文本,里面可以随意定义数据,而不用关注数据类型,但数据必须以json的形式表示并存放。CouchDB以RESTful API的格式提供服务,可以很方便地开发各种语言的客户端。

而CouchDB目前的优势在于:它的数据存储格式是JSON,而JSON为广大程序员所熟悉,便于学习,而且CouchDB还可以移值到移动设备上去,当用户不能联网时,可以在客户端保存数据,当能联网时,可以自动把数据同步到各个分布式结点上去;CouchDB还支持分布式结点的精确复制同步,可以在一个庞大的应用中,随意增加分布式的CouchDB结点,以支持数据的均衡。

作为初学者,本文指导在Windows下安装和初步使用CouchDB。因此本文并没有选择以Apache组织下的CouchDB作为介绍,因为该版本的CouchDB比较适合在Linux下进行编译安装,步骤比较复杂,因此本文选择了使用CouchOne

(http://www.couchone.com/)发布的CouchDB服务器社区版本。CouchOne公司今年与同样从事NoSQL产品的Membase公司合拼,推出了CouchBase产品(分为社区免费版和商业版),将结合Membase、Memcached和CouchDB。并实现高性能缓存,弹性集群和数据库功能等技术。而我们发现,couchone的社区版更适合于我们初学者学习。

下载安装CouchDB

首先到http://www.couchone.com/get下载couchbase的服务器版本,选择Couchbase Server的社区版本,如下图:

 

在下载后,直接点安装文件就会进行自动安装。在安装后,我们要启动Couchbase,启动方法为:

  1. 到安装目录Couchbase\Server\bin下,双击erl.exe,启动erlang环境;
  2. 双击Couchbase\Server\bin下的couchdb.bat ,启动couchdb。

接着,我们通过FireFox浏览器(注意,目前只支持FireFox等浏览器,***不要用IE),访问http://127.0.0.1:5984/_utils,就可以看到couchdb的控制台页面了,如下所示,为了更好看到couchdb的交互过程,我们可以同时打开Firebug,如下图:

 

顺便提醒一下,couchdb大量使用了jQuery插件机制,可以通过http://127.0.0.1:5984/_utils/script/jquery.couch.js看到代码的详细情况,有兴趣的可以查阅。

创建数据库用户

couchdb默认的用户都是admin,这其实不大安全,因此我们可以先创建一个数据库用户,我们在页面的右下角会发现如下图描述的有Welcome to Admin Party! Everyone is admin! Fix this的字样,点Fix this,然后在弹出的窗口中,可以输入自己要设置的用户名和密码,保存即可。

 

同时,couchdb还支持使用jQuery中的$.couch.signup()方法去创建用户,这样,你就可以按照自己的需要去为couchdb去创建用户了,比如增加一些字段属性如email等,还可以设置更详细的couchdb的权限。

#p#

开始创建一个文档数据

下面我们开始使用couchdb的控制面板去创建一个文档数据,步骤如下:

  1. 点“Create Database”,在弹出的窗口中输入文档的名称,这里我们命名为mycouchshop,点确定按钮后,可以看到在控制面板中出现了我们刚建立的文档,如下图:
  2.  

  3. 点mycouchshop,将打开这个文档;
  4. 点“New Document”,这将新建一个文档;
  5. 在打开的文档中,点Add Field”去增加字段,首先,id是默认的字段,我们不需要修改它,我们增加一个字段的名称name,然后在其value字段中写入:Nettuts CouchDB Tutorial One”,注意在每输入完一个字段的值的时候,可以双击输入的文本框,让鼠标离开文本框,以方便输入下一个字段的值,***点“Save Document”保存我们的输入,系统会自动增加一个rev的字段,这个是表示文档的版本号,如下图:
  6.  

如何更新一个文档

要注意的是,couchdb只一个只允许增加数据的数据库,当要对数据库更新时,只是向其中增加新的更新后的版本,而保留原始的版本。下面我们要对刚才新建立的文档修改一下结构,步骤为:

  1. 继续打开mycouchsho数据库;
  2. 选择增加字段,增加一个名称为type的字段,值设置为“product”;
  3. 选择保存该文档。

此时留意,当保存该文档后,会发现如下图所示,最下方couchdb会显示出目前这个是第几个版本:

 

可以看到,目前的是第2个版本了,可以点“Previous Version”回到上一个版本。

通过Curl去创建文档

在couchdb中,还可以使用支持使用curl的方式去新建一个文档,而通过curl向couchdb创建文档时,couchdb是通过REST的接口进行接收数据的。步骤如下,注意下面的方法需要在linux下运行创建。

1)首先创建一个json格式的文件,代码如下,将其保存为person.json:

  1. {  
  2.     "forename":    "Gavin",  
  3.     "surname":    "Cooper",  
  4.     "type":        "person"  

2) 在linux 下打开终端管理器,并且输入:curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @person.json -H "Content-Type: application/json",而couchdb会返回如下所示的json格式响应:

  1. {"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":  
  2. "1-abadd48a09c270047658dbc38dc8a892"}   

可以,couchdb返回的json格式响应中,返回了id和版本号。用户可以通过curl或者其他开发语言,向couchdb提交符合RESTFUL格式的文档,基本规则为:

Post:新创建一个文档

Get:读取文档

PUT:更新一个文档

DELETE:删除一个文档

 

下面的例子,是通过curl去查看我们已经建立过的文档:

curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs

 

小结

本文简单向大家介绍了NoSQL的特点以及介绍了NoSQL家族中的一员CouchDB的安装和简单使用,NoSQL是比较新的热点技术,内容十分丰富,在以后的文章中,将教大家逐步深入学习NoSQL相关知识。

 

【编辑推荐】

  1. NoSQL那些事:51CTO带您走进列数据库
  2. 微软进军NoSQL 发布Trinity数据库
  3. 视觉中国的NoSQL之路:从MySQL到MongoDB
  4. NoSQL内战:MongoDB与CouchDB查询方式对比
  5. MongoDB与CouchDB全方位对比
责任编辑:艾婧 来源: linuxeden
相关推荐

2009-01-22 10:31:28

2013-12-24 10:04:01

PostgreSQL

2011-02-21 17:51:39

Zimbra入门新手

2011-01-10 14:36:00

新手linux基础

2011-05-31 16:47:47

SEO

2010-09-09 13:40:19

XML DOM

2010-06-23 15:00:50

Fix协议

2011-03-22 11:06:52

Nagios安装

2010-05-28 18:22:51

MySQL基本操作

2010-06-10 10:31:36

MySQL出错代码列表

2010-05-14 18:31:17

MySQL 定时数据备

2010-05-17 09:52:55

虚拟化VMware Play

2009-07-16 09:07:46

Linux使用技巧Linux入门Linux开发

2010-06-19 13:47:39

AMF协议

2010-06-21 15:27:38

Linux apt-g

2011-06-30 17:41:46

SEO

2012-05-02 09:22:50

BlackBerry BlackBerryRIM

2013-08-21 15:47:05

InnoDBMemcachedMemcached插件

2009-08-03 13:29:14

SearchServe操作系统微软

2021-08-13 14:16:05

Linux操作系统管理
点赞
收藏

51CTO技术栈公众号