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