• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    探索 CouchDB 針對 Web 應用程序的面向文檔數據庫

    發布: 2009-5-04 15:03 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 485次 | 進入軟件測試論壇討論

    領測軟件測試網


    RESTful JSON API

    CouchDB 通過提供一個 API 來從數據庫中獲取數據。這個 API 可以通過 HTTP GET 和 POST 請求訪問,并且使用 JSON 以 JavaScript 對象的形式返回數據。這使執行數據庫操作非常容易,并且與應用程序用什么語言開發無關。您可以將 JavaScript 框架和 Ajax 請求對象一起使用,比如 Prototype、JQuery 或 ExtJS — 沒有必要在您的 Web 應用程序中使用服務器端語言。

    為了保持簡潔并且展示由 API 發出的原始 JSON 響應,我們在本文中使用命令行工具 curl。這允許您發出 GET、POST、PUT 和 DELETE 請求,并演示從 Web 服務器(在這個例子中是安裝在本地的 CouchDB 服務器)接收到的原始 HTTP 響應。

    請求 curl http://127.0.0.1:5984/ 返回以下響應:{"couchdb":"Welcome","version":"0.8.1-incubating"}。這個簡單的 API 調用是一個簡單的 GET 請求, 其響應通知我們所安裝的 CouchDB 的版本。為了顯式地定義所發出的請求的類型,我們將使用 curl 的 -X 參數,就像在以下請求中一樣:curl -X GET http://127.0.0.1:5984/_all_dbs。這將返回以下結果:[]。

    在這個例子中,我們請求了一個特別的 CouchDB 視圖的 URI,該視圖返回包含 CouchDB 服務器上的所有數據庫的一個列表。如果我們實際創建了數據庫,就會返回一個數據庫名數組。但是在這個例子中,僅返回一個空 JavaScript 數組,F在我們創建一些數據庫,下一次運行該請求的時候,將看到不同的結果:curl -X PUT http://127.0.0.1:5984/fruit。

    收到的響應是:{"ok":true}。然后我們發出第二個請求:curl -X PUT http://127.0.0.1:5984/vegetables。收到的響應和前面的一樣,F在,我們將再次請求一個數據庫列表:curl -X GET http://127.0.0.1:5984/_all_dbs。這次,我們獲得比以前更好的結果:["fruit","vegetables"]。

    當我們創建了這些數據庫之后,返回屬性 “ok” 并帶有布爾值 true。這表明操作是成功的。但是,如果出現異常,應該怎么辦?為了讓 CouchDB 服務器出現問題,我們創建一個與現有數據庫同名的數據庫:curl -X PUT http://127.0.0.1:5984/fruit.

    這次,我們得到的響應如下所示:{"error":"database_already_exists","reason":"Database \"fruit\" already exists."}。

    如您所見,CouchDB 嘗試創建該數據庫,但在這個過程中遇到一個錯誤。最后,它返回屬性 “error” 和錯誤代碼的值(在本例中為 “database_already_exists”)。當然,在現實的應用程序中,我們將檢查從 CouchDB 服務器返回的所有響應,看看是否存在錯誤屬性,并根據所發現的錯誤代碼顯示一條友好的錯誤消息。

    假如我們不再需要 vegetables 數據庫并希望刪除它。要在 CouchDB 刪除數據庫,僅需發出一個 DELETE HTTP 請求,并將該數據庫的名稱附加到基 URI 中,如下所示:curl -X DELETE http://127.0.0.1:5984/vegetables。這將得到一個成功的響應,其結果和前面執行的 PUT 請求一樣,F在我們使用 curl -X GET http://127.0.0.1:5984/_all_dbs 獲取一個數據庫列表。這將得到以下響應:["fruit"]。

    如果數據庫中沒有任何數據,那會出現什么情況呢?清單 2 中的請求創建一個稱為 “apple” 的文檔。


    清單 2. 創建一個稱為 apple 的文檔
    curl -X PUT http://127.0.0.1:5984/fruit/apple \-H "Content-Type: application/json" -d {}

    服務器會做出如下響應:{"ok":true,"id":"apple","rev":"1801185866"}。

    現在已經創建了一個文檔,我們嘗試從數據庫獲取它:curl -X GET http://127.0.0.1:5984/fruit/apple。CouchDB 將做出如下響應:{"_id":"apple","_rev":"1801185866"}。

    我們發出的最后一個 API 調用將獲取關于特定數據庫的信息 — 在這個例子中,為 fruit 數據庫:curl -X GET http://127.0.0.1:5984/fruit。來自服務器的響應告訴我們關于該數據庫的一些有趣信息:


    清單 3. 來自服務器的響應
    {"db_name":"fruit","doc_count":1,"doc_del_count":0,"update_seq":1,"compact_running":false,"disk_size":14263}

    在這個小節中,我們探索了 CouchDB 通過 RESTful JSON API 接口提供的幾個不同 API 方法。在現實中,我們不會親自編寫這些 HTTP 請求,而是由我們選擇的編程語言或腳本語言完成它們。

    CouchDB 還包含一個稱為 Futon 的 Web 應用程序,可將它用作一個 CouchDB 管理工具,它使您能夠輕松維護數據庫、文檔和文檔修改。如果您已經將 CouchDB 安裝到本地機器的默認端口 5984,則可以通過將瀏覽器指向以下地址來訪問 Futon:http://127.0.0.1:5984/_utils/。圖 1 顯示了實際使用中的 Futon。


    圖 1. 實際使用中的 CouchDB Futon 實用工具


    CouchDB 提供的 RESTful API 可能會讓以前使用關系數據庫管理系統的人員望而生畏,但它為與數據庫進行交互提供了一種獨特的高度可訪問的方法。傳統的數據庫系統通常要求使用某些 SQL 客戶機建立一個數據庫連接,然后該連接接收一系列 SQL 語句,以獲取數據和執行 Create、Update、Delete (CRUD) 操作。借助 RESTful JSON API,用戶可以使用任何支持 HTTP 協議的軟件連接到 CouchDB。事實上,許多現代的編程語言和腳本語言都以某種形式提供 HTTP 協議的接口,這意味著 CouchDB 幾乎可以用于任何開發項目。


    結束語

    Apache CouchDB 項目還處于早期發展階段。CouchDB 是一款正在測試中的軟件。CouchDB 在 Web 應用程序、iPhone 應用程序和 Facebook 應用程序中越來越流行。到目前為止,強大的 wiki、博客、討論論壇和文檔管理軟件都致力于改善關系數據庫,讓它們能夠更高效地儲存文檔形式的數據。然而,隨著 CouchDB 的發行版越來越穩定,CouchDB 數據庫越來越受到這些類型的軟件的青睞,從而避免了文檔修訂管理和不斷變化的模式需求帶來的煩惱。

    總體而言,到目前為止用戶對 CouchDB 的反饋都是正面的,盡管很多人覺得有必要在博客和論壇上討論哪種數據庫更好 — 關系型或面向文檔型。不過,CouchDB 從來沒有打算取代關系數據庫,也不期望成為數據庫開發的新標準。當然,在很多場景中,CouchDB 的簡單性使其不能與 DB2 和 Oracle 相媲美。不過在很多其他場景中,數據庫的簡單性確實是必要的,傳統的 RDBMS 產品被過度吹捧了,并且耗費的資源太多。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    33/3<123

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>