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