什么是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 ,也得到了广泛认同。
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的权限。
开始创建一个文档数据
下面我们开始使用couchdb的控制面板去创建一个文档数据,步骤如下:
1)点“Create Database”,在弹出的窗口中输入文档的名称,这里我们命名为mycouchshop,点确定按钮后,可以看到在控制面板中出现了我们刚建立的文档,如下图:
2)点mycouchshop,将打开这个文档;
3) 点“New Document”,这将新建一个文档;
4) 在打开的文档中,点Add Field”去增加字段,首先,id是默认的字段,我们不需要修改它,我们增加一个字段的名称name,然后在其value字段中写入:Nettuts CouchDB Tutorial One”,注意在每输入完一个字段的值的时候,可以双击输入的文本框,让鼠标离开文本框,以方便输入下一个字段的值,最后点“Save Document”保存我们的输入,系统会自动增加一个rev的字段,这个是表示文档的版本号,如下图:
如何更新一个文档
要注意的是,couchdb只一个只允许增加数据的数据库,当要对数据库更新时,只是向其中增加新的更新后的版本,而保留原始的版本。下面我们要对刚才新建立的文档修改一下结构,步骤为:
1)继续打开mycouchsho数据库;
2)选择增加字段,增加一个名称为type的字段,值设置为“product”;
3) 选择保存该文档。
此时留意,当保存该文档后,会发现如下图所示,最下方couchdb会显示出目前这个是第几个版本:
可以看到,目前的是第2个版本了,可以点“Previous Version”回到上一个版本。
通过Curl去创建文档
在couchdb中,还可以使用支持使用curl的方式去新建一个文档,而通过curl向couchdb创建文档时,couchdb是通过REST的接口进行接收数据的。步骤如下,注意下面的方法需要在linux下运行创建。
1)首先创建一个json格式的文件,代码如下,将其保存为person.json:
{
"forename": "Gavin",
"surname": "Cooper",
"type": "person"
}
2) 在linux 下打开终端管理器,并且输入:curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @person.json -H "Content-Type: application/json",而couchdb会返回如下所示的json格式响应:
{"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":"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相关知识。
相关推荐
第5节 - 5.CouchDB的使用入门_curl命令1 第6节 - 6.CouchDB创建数据库_删除数据库_curl命令2 第7节 - 7.图形化工具fauxton的使用1 第8节 - 8.CouchDB的复制操作一 第9节 - 9.couchDB的复制操作二 第10节 - 10....
这是我的第一个Node应用程序,其中我将利用CouchDB的灵活性和NoSQL的强大功能,其中还包括复制功能。 主要目的是构建一个简单的node.js + CouchDB +其他库应用程序,这样我就可以开始。 工具:NodeEclipse,Chrome...
NoSQL数据库学习教程 CAP定律是NoSQL数据库存在的三大基石之一,CAP定律是指在分布式系统中,无法同时满足一致性、可用性和分区容忍性这三个属性。其中,一致性是指所有节点在同一时间看到相同的数据;可用性是指...
### NoSQL数据库详细介绍入门经典 #### 序言 随着互联网技术的发展及大数据时代的到来,传统的关系型数据库在处理海量数据时逐渐显露出不足。NoSQL(Not Only SQL)数据库应运而生,以其灵活的数据模型、高扩展性...
第一部分 NoSQL入门 第1章 NoSQL的概念及适用范围 2 1.1 定义和介绍 3 1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 ...
根据提供的文件内容,我们可以提炼出以下关于NoSQL的专业知识点: 1. NoSQL基础:书中首先介绍了NoSQL的基本概念...这些知识点覆盖了NoSQL数据库的入门知识到高级应用,为不同层次的读者提供了学习和深入研究的材料。
常见NoSQL数据库包括MongoDB、Cassandra、Redis、CouchDB等。 二、环境信息准备 文档中提到使用的Python版本为2.7.1,这是一个比较旧的版本,不过在学习入门时,大多数基础概念和操作与新版本是相通的。NoSQL数据库...
综上所述,《Beginning CouchDB》不仅仅是一本入门书籍,它还提供了一系列的高级主题讨论,帮助读者深入理解CouchDB的工作原理,并能够在实际项目中发挥其优势。对于想要深入数据库管理与开发的读者来说,这是一本...
**CouchDB**是一种开源、分布式、面向文档的数据库系统,以其独特的设计理念在NoSQL领域占据了一席之地。它采用JSON作为数据存储格式,HTTP作为通信协议,使得其能够轻松地集成到现代Web应用中。 #### 二、技术概述...
### GEO.CouchDB与Node.js入门相关知识点 #### 一、引言 随着信息技术的不断发展,数据变得越来越重要。在日常生活中,“位置”这一概念变得至关重要。无论是过去的位置、当前的位置还是将要去的地方,这些“位置”...
MongoDB入门篇1主要介绍了数据的基本概念,数据库管理系统(DBMS)的定义,常见的数据库管理系统,以及NoSQL数据库的相关知识。 1. 数据:数据是未经处理的原始记录,描述事物存在的符号,通常需要通过组织和分类...
文档数据库的典型代表除了MongoDB,还有如Amazon SimpleDB、CouchDB和Riak等。文档数据库适合于数据模型经常变更的场景,并且可以通过文档中的嵌套数据结构来存储复杂的数据关系。 从优势方面看,NoSQL数据库可以更...
### Redis入门与实践 #### 一、Redis简介与NoSQL概念 Redis是一种广泛使用的开源内存数据结构存储系统,它可以作为数据库、缓存和消息中间件使用。作为一种NoSQL(Not Only SQL)数据库,Redis提供了键值对存储...
### MongoDB 快速入门知识点详解 #### 一、MongoDB 概述 - **定义**: - MongoDB 是一种开源的、文档型的、非关系型数据库(NoSQL),它采用了JSON-BSON(Binary JSON)格式来存储数据,提供了一个高性能、易扩展...
标题《Seven Databases in Seven Weeks》和描述《A Guide to Modern Databases and the NoSQL Movement》表明这是一本专注于现代数据库和NoSQL运动的入门指南。本书的目的是在一周之内使读者能够掌握一种新的数据库...
#### 二、Linux操作系统入门 ##### 2.1 Linux目录结构 Linux系统的目录结构通常遵循以下模式: - **根目录(/)**:所有其他目录的起点。 - **usr**:存放应用程序和其他软件。 - **etc**:存储系统配置文件。 - **...
- **面向文档的数据库**:MongoDB、CouchDB。 - **面向列的数据库**:Cassandra、HBase、Hypertable。 - **优点**: - **处理速度快**:适合处理大规模数据的快速读写操作。 - **存储量大**:能够轻松应对PB级别...
例如,书中对于CouchDB的介绍被认为是最好的入门指南之一。读者通过每周学习一个数据库,能够迅速地掌握每一个数据库的使用技巧,甚至能够对专家级别的内容进行探讨。 书中还特别强调了现代数据库设计和实现的各个...