• <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 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 503次 | 進入軟件測試論壇討論

    領測軟件測試網



    文檔:CouchDB 數據庫的構建塊

    CouchDB 數據庫存儲惟一的命名文檔并提供一個 RESTful JSON API,該 API 允許應用程序讀取和修改這些文檔。CouchDB 數據庫中的所有數據都儲存在一個文檔中,并且每個文檔可以由未定義的字段組成。這意味著每個文檔都可以具有未在其他文檔中定義的字段。換句話說,這些文檔不受嚴格的模式的限制。

    每個文檔還可以包含元數據(關于數據的數據),比如惟一的文檔 ID 和修改號。文檔字段可以包含各種類型的數據,比如文本字符串、數字和布爾值(true/false)等。字段的大小不受限制。每個字段必須有一個惟一的名稱(文檔不能包含兩個同名的字段)。

    當更改 CouchDB 文檔時,這些更改實際上并不是附加在原來的文檔之上,而是創建整個文檔的一個新版本,即 修訂。這意味著數據庫會自動維護文檔修改的完整歷史。文檔-修訂系統管理修訂控制,但不包括在數據庫中自動完成的修訂。

    CouchDB 沒有鎖機制;兩個客戶機可以同時加載和編輯同一個文檔。不過,如果一個客戶機保存了所有更改時,另一個客戶機在嘗試保存更改時將收到一個編輯沖突?梢酝ㄟ^加載更新版本的文檔來解決該沖突,然后重新進行編輯并再次保存。CouchDB 通過確保文檔全部更新成功或全部失敗來保持數據的一致性 — 文檔更新要么成功,要么失敗。數據庫中不會存在僅保存了一部分的文檔。





    回頁首

    視圖:從 CouchDB 獲取有用信息

    CouchDB 的本質是非結構化的,雖然由于缺乏嚴格的模式而使其獲得了更大的靈活性和可伸縮性,但是這使得 CouchDB 在現實應用程序中難以使用。想一下關系數據庫,對于每個應用程序,嚴格定義的表之間的關系對于為數據賦予意義至關重要。不過,當要求實現更高的性能時,則需要創建物化視圖來反規范化(de-normalize)數據。在很多情況下,面向文檔數據庫采用相反的方法處理事情。它將數據儲存在一個平面地址空間中,這就像一個完全反規范化的數據倉庫。然后它提供一個視圖模型為數據添加結構,因此能夠聚合數據得出有用的含義。

    在 CouchDB 中可以根據需求創建視圖,并使用它在數據庫中聚合、連接和報告文檔。視圖是動態創建的,對數據庫中的文檔沒有影響。視圖是在設計文檔中定義的,并且可以跨實例復制。這些設計文檔包含使用 MapReduce 運行查詢的 JavaScript 函數。視圖的 map 函數將文檔作為一個參數,并執行一系列的計算來決定應該對哪些數據使用視圖。如果一個視圖具有 reduce 函數,就使用它來聚合結果。視圖接收一組鍵和值,然后將它們合并成一個單一的值。

    清單 1 是 CouchDB 視圖的 map 和 reduce 函數的一個例子,它計算帶有附件的文檔的數目。


    清單 1. 典型的 CouchDB 視圖
    map: function(doc) { if (doc._attachments) { emit("with attachment", 1); } else { emit("without attachment", 1); }}reduce: function(keys, values) { return sum(values);}

    CouchDB 視圖可以是儲存在設計文檔內部的永久性視圖,或者是根據需求執行的臨時視圖。臨時視圖耗費的資源比較多,并且隨著數據庫中存儲的數據的增長而變慢。因此,CouchDB 視圖大部分情況下應該創建在設計文檔中。





    延伸閱讀

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

    32/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>