成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初窺NoSQL世界 開源CouchDB新手入門

數(shù)據(jù)庫 其他數(shù)據(jù)庫
NoSQL現(xiàn)在已經(jīng)變成在IT界中十分熱門的話題了,在本文中,將為你介紹NoSQL中的一員CouchDB的基本知識,帶你開始走入NoSQL豐富多彩的世界。

NoSQL現(xiàn)在已經(jīng)變成在IT界中十分熱門的話題了,在本文中,將為你介紹NoSQL中的一員CouchDB的基本知識,帶你開始走入NoSQL豐富多彩的世界。

 

什么是NoSQL

NoSQL(是not only SQL的縮寫,也有說法認為是non-relational,即非關(guān)系型數(shù)據(jù)庫)其實是不使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫模型,而是使用如key-value存儲、文檔型的、列存儲、圖型數(shù)據(jù)庫、xml等方式存儲數(shù)據(jù)的模型統(tǒng)稱。之所以不使用傳統(tǒng)的范式,主要是在于它們存儲數(shù)據(jù)的方式發(fā)生了變化。例如,當(dāng)你需要存儲發(fā)票的數(shù)據(jù)時,在傳統(tǒng)的關(guān)系數(shù)據(jù)模型中,需要設(shè)計表的結(jié)構(gòu),然后使用服務(wù)器端語言將其轉(zhuǎn)化為實體對象,再傳遞到用戶端(這就是所謂的ORM對象關(guān)系映射),而在NoSQL中,你只要保存發(fā)票數(shù)據(jù)就可以了。 NoSQL不需要預(yù)先設(shè)計表和結(jié)構(gòu)就可以儲存新的數(shù)值。當(dāng)然,請記住,NoSQL不是銀彈。如果你的項目中要保存的數(shù)據(jù)的確需要關(guān)系型數(shù)據(jù)庫模型才能完成,那么應(yīng)該堅持使用關(guān)系型數(shù)據(jù)庫。

NoSQL的特點

NoSQL的出現(xiàn)主要是為了解決數(shù)據(jù)庫讀寫性能的問題,隨著越來越龐大的Web應(yīng)用系統(tǒng)的出現(xiàn),如SNS,微博等應(yīng)用需要大量對數(shù)據(jù)進行讀和寫,并且要求進行分布式的部署,而傳統(tǒng)的關(guān)系數(shù)據(jù)模型在大數(shù)據(jù)訪問量和分布式環(huán)境下,由于關(guān)系模型中經(jīng)常要對多表進行連接操作,因此性能有時會有所降低,所以NoSQL的強調(diào)的是“非關(guān)系型”數(shù)據(jù),NoSQL 數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接 操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。

在http://nosql-database.org/中,對NoSQL的描述是:非關(guān)系的,分布式的,開源的而且可以垂直擴展的。并且大多數(shù)NoSQL數(shù)據(jù)庫具有以下特點:Schema-free,方便的支持數(shù)據(jù)冗余,簡單的API,基于最終一致性(eventually consistent)和BASE原則(而非ACID原則)。目前,Google 的 BigTable 與 Amazon 的 Dynamo 是非常成功的商業(yè) NoSQL 實現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了廣泛認同。

#p#

CouchDB介紹

CouchDB是Apache組織發(fā)布的一款NoSQL開源數(shù)據(jù)庫項目,是面向文檔類型的Nosql。它由Erlang編寫而成,使用JSON格式去保存數(shù)據(jù)。所謂文檔數(shù)據(jù)庫,并不是說它只能存儲文本。CouchDB的字段只有三個:文檔ID、文檔版本號和內(nèi)容。內(nèi)容字段可以看到是一個text類型的文本,里面可以隨意定義數(shù)據(jù),而不用關(guān)注數(shù)據(jù)類型,但數(shù)據(jù)必須以json的形式表示并存放。CouchDB以RESTful API的格式提供服務(wù),可以很方便地開發(fā)各種語言的客戶端。

而CouchDB目前的優(yōu)勢在于:它的數(shù)據(jù)存儲格式是JSON,而JSON為廣大程序員所熟悉,便于學(xué)習(xí),而且CouchDB還可以移值到移動設(shè)備上去,當(dāng)用戶不能聯(lián)網(wǎng)時,可以在客戶端保存數(shù)據(jù),當(dāng)能聯(lián)網(wǎng)時,可以自動把數(shù)據(jù)同步到各個分布式結(jié)點上去;CouchDB還支持分布式結(jié)點的精確復(fù)制同步,可以在一個龐大的應(yīng)用中,隨意增加分布式的CouchDB結(jié)點,以支持數(shù)據(jù)的均衡。

作為初學(xué)者,本文指導(dǎo)在Windows下安裝和初步使用CouchDB。因此本文并沒有選擇以Apache組織下的CouchDB作為介紹,因為該版本的CouchDB比較適合在Linux下進行編譯安裝,步驟比較復(fù)雜,因此本文選擇了使用CouchOne

(http://www.couchone.com/)發(fā)布的CouchDB服務(wù)器社區(qū)版本。CouchOne公司今年與同樣從事NoSQL產(chǎn)品的Membase公司合拼,推出了CouchBase產(chǎn)品(分為社區(qū)免費版和商業(yè)版),將結(jié)合Membase、Memcached和CouchDB。并實現(xiàn)高性能緩存,彈性集群和數(shù)據(jù)庫功能等技術(shù)。而我們發(fā)現(xiàn),couchone的社區(qū)版更適合于我們初學(xué)者學(xué)習(xí)。

下載安裝CouchDB

首先到http://www.couchone.com/get下載couchbase的服務(wù)器版本,選擇Couchbase Server的社區(qū)版本,如下圖:

 

在下載后,直接點安裝文件就會進行自動安裝。在安裝后,我們要啟動Couchbase,啟動方法為:

  1. 到安裝目錄Couchbase\Server\bin下,雙擊erl.exe,啟動erlang環(huán)境;
  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看到代碼的詳細情況,有興趣的可以查閱。

創(chuàng)建數(shù)據(jù)庫用戶

couchdb默認的用戶都是admin,這其實不大安全,因此我們可以先創(chuàng)建一個數(shù)據(jù)庫用戶,我們在頁面的右下角會發(fā)現(xiàn)如下圖描述的有Welcome to Admin Party! Everyone is admin! Fix this的字樣,點Fix this,然后在彈出的窗口中,可以輸入自己要設(shè)置的用戶名和密碼,保存即可。

 

同時,couchdb還支持使用jQuery中的$.couch.signup()方法去創(chuàng)建用戶,這樣,你就可以按照自己的需要去為couchdb去創(chuàng)建用戶了,比如增加一些字段屬性如email等,還可以設(shè)置更詳細的couchdb的權(quán)限。

#p#

開始創(chuàng)建一個文檔數(shù)據(jù)

下面我們開始使用couchdb的控制面板去創(chuàng)建一個文檔數(shù)據(jù),步驟如下:

  1. 點“Create Database”,在彈出的窗口中輸入文檔的名稱,這里我們命名為mycouchshop,點確定按鈕后,可以看到在控制面板中出現(xiàn)了我們剛建立的文檔,如下圖:
  2.  

  3. 點mycouchshop,將打開這個文檔;
  4. 點“New Document”,這將新建一個文檔;
  5. 在打開的文檔中,點Add Field”去增加字段,首先,id是默認的字段,我們不需要修改它,我們增加一個字段的名稱name,然后在其value字段中寫入:Nettuts CouchDB Tutorial One”,注意在每輸入完一個字段的值的時候,可以雙擊輸入的文本框,讓鼠標離開文本框,以方便輸入下一個字段的值,***點“Save Document”保存我們的輸入,系統(tǒng)會自動增加一個rev的字段,這個是表示文檔的版本號,如下圖:
  6.  

如何更新一個文檔

要注意的是,couchdb只一個只允許增加數(shù)據(jù)的數(shù)據(jù)庫,當(dāng)要對數(shù)據(jù)庫更新時,只是向其中增加新的更新后的版本,而保留原始的版本。下面我們要對剛才新建立的文檔修改一下結(jié)構(gòu),步驟為:

  1. 繼續(xù)打開mycouchsho數(shù)據(jù)庫;
  2. 選擇增加字段,增加一個名稱為type的字段,值設(shè)置為“product”;
  3. 選擇保存該文檔。

此時留意,當(dāng)保存該文檔后,會發(fā)現(xiàn)如下圖所示,最下方couchdb會顯示出目前這個是第幾個版本:

 

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

通過Curl去創(chuàng)建文檔

在couchdb中,還可以使用支持使用curl的方式去新建一個文檔,而通過curl向couchdb創(chuàng)建文檔時,couchdb是通過REST的接口進行接收數(shù)據(jù)的。步驟如下,注意下面的方法需要在linux下運行創(chuàng)建。

1)首先創(chuàng)建一個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格式響應(yīng):

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

可以,couchdb返回的json格式響應(yīng)中,返回了id和版本號。用戶可以通過curl或者其他開發(fā)語言,向couchdb提交符合RESTFUL格式的文檔,基本規(guī)則為:

Post:新創(chuàng)建一個文檔

Get:讀取文檔

PUT:更新一個文檔

DELETE:刪除一個文檔

 

下面的例子,是通過curl去查看我們已經(jīng)建立過的文檔:

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

 

小結(jié)

本文簡單向大家介紹了NoSQL的特點以及介紹了NoSQL家族中的一員CouchDB的安裝和簡單使用,NoSQL是比較新的熱點技術(shù),內(nèi)容十分豐富,在以后的文章中,將教大家逐步深入學(xué)習(xí)NoSQL相關(guān)知識。

 

【編輯推薦】

  1. NoSQL那些事:51CTO帶您走進列數(shù)據(jù)庫
  2. 微軟進軍NoSQL 發(fā)布Trinity數(shù)據(jù)庫
  3. 視覺中國的NoSQL之路:從MySQL到MongoDB
  4. NoSQL內(nèi)戰(zhàn):MongoDB與CouchDB查詢方式對比
  5. MongoDB與CouchDB全方位對比
責(zé)任編輯:艾婧 來源: linuxeden
相關(guān)推薦

2009-01-22 10:31:28

2013-12-24 10:04:01

PostgreSQL

2011-02-21 17:51:39

Zimbra入門新手

2011-05-31 16:47:47

SEO

2011-01-10 14:36:00

新手linux基礎(chǔ)

2010-09-09 13:40:19

XML DOM

2010-06-23 15:00:50

Fix協(xié)議

2011-03-22 11:06:52

Nagios安裝

2010-05-28 18:22:51

MySQL基本操作

2011-06-30 17:41:46

SEO

2010-06-19 13:47:39

AMF協(xié)議

2010-06-21 15:27:38

Linux apt-g

2009-07-16 09:07:46

Linux使用技巧Linux入門Linux開發(fā)

2010-05-14 18:31:17

MySQL 定時數(shù)據(jù)備

2010-05-17 09:52:55

虛擬化VMware Play

2010-06-10 10:31:36

MySQL出錯代碼列表

2013-08-21 15:47:05

InnoDBMemcachedMemcached插件

2012-05-02 09:22:50

BlackBerry BlackBerryRIM

2021-08-13 14:16:05

Linux操作系統(tǒng)管理

2018-04-17 11:00:13

數(shù)據(jù)庫MySQL命令大全
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 97日日碰人人模人人澡分享吧 | 美女网站视频免费黄 | 国产一区久久精品 | 在线观看视频亚洲 | 亚洲免费视频网址 | 婷婷久久网 | 国产成人福利 | 久久久久电影 | 男人的天堂一级片 | 欧美一区二区大片 | 成人h视频在线 | 日韩中文字幕一区 | 亚洲人成人一区二区在线观看 | 少妇黄色 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 国产片淫级awww | 久久久精品一区二区 | 色婷婷综合成人av | 国产精品精品视频一区二区三区 | 亚洲精品一区二区在线观看 | 精品国产乱码久久久久久果冻传媒 | 91精品一区二区三区久久久久久 | 91久久国产综合久久91精品网站 | 精品日韩一区 | 成人三级av | 亚洲精品电影网在线观看 | 欧美黑人一区二区三区 | 亚洲一区综合 | 午夜影院操 | 51ⅴ精品国产91久久久久久 | 亚洲免费一区 | 在线播放日韩 | 久久精品国产一区 | h视频免费在线观看 | 日本理论片好看理论片 | 久久亚洲综合 | 日韩电影中文字幕 | 在线观看a视频 | 亚洲在线一区二区 | 91日b| 免费国产黄网站在线观看视频 |