Apache CouchDB數(shù)據(jù)庫
導(dǎo)讀:隨著技術(shù)的迅速發(fā)展,我們也追求最新的技術(shù)來幫助我們完成工作的需要,那么毫無疑問我們需要使用云技術(shù)來享受這些新的服務(wù)。CouchDB數(shù)據(jù)庫是眾多開源項(xiàng)目中的一個(gè),該項(xiàng)目構(gòu)建了一個(gè)用于存儲(chǔ)key-value pairs的數(shù)據(jù)庫。這個(gè)項(xiàng)目使用Erlang語言編寫的,受Apache 軟件基金支持。你可以下載源文件在任何機(jī)器上安裝,然后編譯運(yùn)行它們。使用它是沒有費(fèi)用的,除了你需要花錢購置服務(wù)器。
CouchDB數(shù)據(jù)庫與Amazon的工具是相似的,其核心就是文檔模型,但是它有一些特別之處。你仍舊以行的形式來存儲(chǔ)key-value pairs,但是這些key-value pairs可以是任何標(biāo)準(zhǔn)的JSON(JavaScript Object Notation)數(shù)據(jù)類型,如布爾和數(shù)字類型。值的范圍不局限于1024字節(jié)長度的字符串,有辦法可以讓其存儲(chǔ)長數(shù)值,甚至是圖形。所有的請(qǐng)求和響應(yīng)格式化為JavaScript。沒有基于XML的Web Services,只有JSON.
最大的不同在于寫查詢語句。CouchDB可以通過JavaScript單獨(dú)寫map functions和reduce functions。一個(gè)簡單的查詢或許僅僅就是一個(gè)map function,帶有一個(gè)If子句來測試數(shù)據(jù)比某個(gè)數(shù)值大還是小。只有在你試圖計(jì)算統(tǒng)計(jì)由map functions查詢的數(shù)據(jù)時(shí)才會(huì)用到reduce functions。發(fā)現(xiàn)計(jì)算行的個(gè)數(shù)很容易辦到,但是也有可能丟失了一些其它很酷的特性,因?yàn)閙ap function只能由JavaScript來寫。我除了發(fā)現(xiàn)計(jì)算出匹配的數(shù)目,至于其他的非學(xué)術(shù)的用途我還沒有弄清楚。文檔包括了一個(gè)給人印象很深刻的reduction function,用來歸并統(tǒng)計(jì)的,但是我不知道CouchDB真的是否是處理這類事情的正確工具,如果你需要更復(fù)雜的統(tǒng)計(jì),妥當(dāng)?shù)木褪菆?jiān)持使用傳統(tǒng)的數(shù)據(jù)庫,獲得統(tǒng)計(jì)報(bào)表。
這個(gè)項(xiàng)目還有一些限制的。項(xiàng)目的首頁稱之為“一種分布式,容錯(cuò),自由面向文檔模式的數(shù)據(jù)庫,”沒有一些人工干預(yù)你是不會(huì)獲得分布式和容錯(cuò)功能的。CouchDB有一個(gè)好看的AJAX用戶界面,包含了一個(gè)form表單,能讓你復(fù)制數(shù)據(jù)庫。但是還不是自動(dòng)的。
CouchDB計(jì)劃會(huì)增加存取控制和安全模式,但是沒有以文檔的形式展示出來,在API中也沒顯示。他們?cè)O(shè)計(jì)的初衷就是使用純JavaScript,取代SQL,或者其他的語言,這是一個(gè)好的主意,你不會(huì)獲得或者失去權(quán)限閱讀文檔,你能寫JavaScript函數(shù)來返回true或者false結(jié)果。
使用純JavaScript也并非壞事。當(dāng)我使用這些數(shù)據(jù)庫的時(shí)候,我很快發(fā)現(xiàn)有人能夠在客戶端開發(fā)一個(gè)安全模型層,使用一些不錯(cuò)的加密技術(shù)。在客戶端加強(qiáng)安全控制,就能減少服務(wù)器端的工作,我在《半透明數(shù)據(jù)庫》一文中有一些介紹。
這個(gè)特點(diǎn)正在驅(qū)使一些極端用戶使用CouchDB作為整個(gè)服務(wù)器棧。J. Chris Anderson,項(xiàng)目的委托人之一,寫了一篇文章,證明CouchDB是一個(gè)應(yīng)用程序服務(wù)器的全部所需。用于顯示和與數(shù)據(jù)交互的業(yè)務(wù)邏輯是用JavaScript編寫的,從CouchDB下載后是一個(gè)JSON數(shù)據(jù)包。
在Anderson的眼里,當(dāng)所有的功能都能用JavaScript實(shí)現(xiàn),在服務(wù)器上使用Ruby、Python、Java、 PHP沒有什么大的意義。這種看法或許有些極端,因?yàn)榭倳?huì)遇到一些情況,客戶機(jī)器不能保證能正確的實(shí)現(xiàn)一些功能,客戶端的客戶比我們知道的東西少。像CouchDB這種輕量級(jí)的工具使得人們開始考慮完成一項(xiàng)工作真正需要多少代碼。
 
Apache CouchDB數(shù)據(jù)庫有利于構(gòu)建很多協(xié)作型的應(yīng)用,很多Web應(yīng)用都是圍繞著文檔、上下文、任務(wù)、Bug報(bào)告,這些就是Apache CouchDB數(shù)據(jù)庫最擅長的方面,Apache CouchDB數(shù)據(jù)庫作為新興的技術(shù)是很受用戶的青睞,更由于Apache CouchDB數(shù)據(jù)庫一系列的優(yōu)點(diǎn)使其博得很多人的喜愛。
【編輯推薦】















 
 
 






 
 
 
 