• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 3  文章 - 2  trackbacks - 0
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            ACE資料

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


            皮東

            ??? Berkeley DB是由美國Sleepycat Software公司開發(fā)的一套開放源碼的嵌入式數(shù)據(jù)庫的程序庫(database library),
            它為應(yīng)用程序提供可伸縮的、高性能的、有事務(wù)保護(hù)功能的數(shù)據(jù)管理服務(wù)。Berkeley DB為數(shù)據(jù)的存取和管理提供了一組
            簡潔的函數(shù)調(diào)用API接口。

            ??? 它是一個經(jīng)典的C-library模式的toolkit,為程序員提供廣泛豐富的函數(shù)集,是為應(yīng)用程序開發(fā)者提供工業(yè)級強(qiáng)度的
            數(shù)據(jù)庫服務(wù)而設(shè)計的。其主要特點(diǎn)如下:

            ??? 嵌入式(Embedded):它直接鏈接到應(yīng)用程序中,與應(yīng)用程序運(yùn)行于同樣的地址空間中,因此,無論是在網(wǎng)絡(luò)上不同
            計算機(jī)之間還是在同一臺計算機(jī)的不同進(jìn)程之間,數(shù)據(jù)庫操作并不要求進(jìn)程間通訊。

            ??? Berkeley DB為多種編程語言提供了API接口,其中包括C、C++、Java、Perl、Tcl、Python和PHP,所有的數(shù)據(jù)庫操作
            都在程序庫內(nèi)部發(fā)生。多個進(jìn)程,或者同一進(jìn)程的多個線程可同時使用數(shù)據(jù)庫,有如各自單獨(dú)使用,底層的服務(wù)如加鎖、
            事務(wù)日志、共享緩沖區(qū)管理、內(nèi)存管理等等都由程序庫透明地執(zhí)行。

            ??? 輕便靈活(Portable):它可以運(yùn)行于幾乎所有的UNIX和Linux系統(tǒng)及其變種系統(tǒng)、Windows操作系統(tǒng)以及多種嵌入式實(shí)
            時操作系統(tǒng)之下。它在32位和64位系統(tǒng)上均可運(yùn)行,已經(jīng)被好多高端的因特網(wǎng)服務(wù)器、臺式機(jī)、掌上電腦、機(jī)頂盒、網(wǎng)絡(luò)
            交換機(jī)以及其他一些應(yīng)用領(lǐng)域所采用。一旦Berkeley DB被鏈接到應(yīng)用程序中,終端用戶一般根本感覺不到有一個數(shù)據(jù)庫
            系統(tǒng)存在。

            ??? 可伸縮(Scalable):這一點(diǎn)表現(xiàn)在很多方面。Database library本身是很精簡的(少于300KB的文本空間),但它
            能夠管理規(guī)模高達(dá)256TB的數(shù)據(jù)庫。它支持高并發(fā)度,成千上萬個用戶可同時操縱同一個數(shù)據(jù)庫。Berkeley DB能以足夠小
            的空間占用量運(yùn)行于有嚴(yán)格約束的嵌入式系統(tǒng),也可以在高端服務(wù)器上耗用若干GB的內(nèi)存和若干TB的磁盤空間。

            ??? Berkeley DB在嵌入式應(yīng)用中比關(guān)系數(shù)據(jù)庫和面向?qū)ο髷?shù)據(jù)庫要好,有以下兩點(diǎn)原因:
            ???
            ??? (1)因為數(shù)據(jù)庫程序庫同應(yīng)用程序在相同的地址空間中運(yùn)行,所以數(shù)據(jù)庫操作不需要進(jìn)程間的通訊。在一臺機(jī)器的
            不同進(jìn)程間或在網(wǎng)絡(luò)中不同機(jī)器間進(jìn)行進(jìn)程通訊所花費(fèi)的開銷,要遠(yuǎn)遠(yuǎn)大于函數(shù)調(diào)用的開銷;

            ??? (2)因為Berkeley DB對所有操作都使用一組API接口,因此不需要對某種查詢語言進(jìn)行解析,也不用生成執(zhí)行計劃,
            大大提高了運(yùn)行效.


            BerkeleyDB系統(tǒng)結(jié)構(gòu)


            ??? Berkeley DB由五個主要的子系統(tǒng)構(gòu)成.包括: 存取管理子系統(tǒng)、內(nèi)存池管理子系統(tǒng)、事務(wù)子系統(tǒng)、鎖子系統(tǒng)以及日志子系統(tǒng)。
            其中存取管理子系統(tǒng)作為Berkeley DB數(shù)據(jù)庫進(jìn)程包內(nèi)部核心組件,而其他子系統(tǒng)都存在于Berkeley DB數(shù)據(jù)庫進(jìn)程包的外部。??

            ??? 每個子系統(tǒng)支持不同的應(yīng)用級別。

            ??? 1.數(shù)據(jù)存取子系統(tǒng)
            ??? 數(shù)據(jù)存取(Access Methods)子系統(tǒng)為創(chuàng)建和訪問數(shù)據(jù)庫文件提供了多種支持。Berkeley DB提供了以下四種文件存儲方法:
            哈希文件、B樹、定長記錄(隊列)和變長記錄(基于記錄號的簡單存儲方式),應(yīng)用程序可以從中選擇最適合的文件組織結(jié)構(gòu)。
            程序員創(chuàng)建表時可以使用任意一種結(jié)構(gòu),并且可以在同一個應(yīng)用程序中對不同存儲類型的文件進(jìn)行混合操作。

            ??? 在沒有事務(wù)管理的情況下,該子系統(tǒng)中的模塊可單獨(dú)使用,為應(yīng)用程序提供快速高效的數(shù)據(jù)存取服務(wù)。
            數(shù)據(jù)存取子系統(tǒng)適用于不需事務(wù)只需快速格式文件訪問的應(yīng)用。

            ??? 2.內(nèi)存池管理子系統(tǒng)
            ??? 內(nèi)存池(Memory pool)子系統(tǒng)對Berkeley DB所使用的共享緩沖區(qū)進(jìn)行有效的管理。它允許同時訪問數(shù)據(jù)庫的多個進(jìn)程或者
            進(jìn)程的多個線程共享一個高速緩存,負(fù)責(zé)將修改后的頁寫回文件和為新調(diào)入的頁分配內(nèi)存空間。
            ???
            ??? 它也可以獨(dú)立于Berkeley DB系統(tǒng)之外,單獨(dú)被應(yīng)用程序使用,為其自己的文件和頁分配內(nèi)存空間。
            內(nèi)存池管理子系統(tǒng)適用于需要靈活的、面向頁的、緩沖的共享文件訪問的應(yīng)用。

            ??? 3.事務(wù)子系統(tǒng)
            ??? 事務(wù)(Transaction)子系統(tǒng)為Berkeley DB提供事務(wù)管理功能。它允許把一組對數(shù)據(jù)庫的修改看作一個原子單位,
            這組操作要么全做,要么全不做。在默認(rèn)的情況下,系統(tǒng)將提供嚴(yán)格的ACID事務(wù)屬性,但是應(yīng)用程序可以選擇不使用系統(tǒng)所作的
            隔離保證。該子系統(tǒng)使用兩段鎖技術(shù)和先寫日志策略來保證數(shù)據(jù)庫數(shù)據(jù)的正確性和一致性。

            ??? 它也可以被應(yīng)用程序單獨(dú)使用來對其自身的數(shù)據(jù)更新進(jìn)行事務(wù)保護(hù)。事務(wù)子系統(tǒng)適用于需要事務(wù)保證數(shù)據(jù)的修改的應(yīng)用。
            ???
            ??? 4.鎖子系統(tǒng)
            ??? 鎖(Locking)子系統(tǒng)為Berkeley DB提供鎖機(jī)制,為系統(tǒng)提供多用戶讀取和單用戶修改同一對象的共享控制。
            數(shù)據(jù)存取子系統(tǒng)可利用該子系統(tǒng)獲得對頁或記錄的讀寫權(quán)限;事務(wù)子系統(tǒng)利用鎖機(jī)制來實(shí)現(xiàn)多個事務(wù)的并發(fā)控制。
            ???
            ??? 該子系統(tǒng)也可被應(yīng)用程序單獨(dú)采用。鎖子系統(tǒng)適用于一個靈活的、快速的、可設(shè)置的鎖管理器。
            ???
            ??? 5.日志子系統(tǒng)???
            ??? 日志(Logging)子系統(tǒng)采用的是先寫日志的策略,用于支持事務(wù)子系統(tǒng)進(jìn)行數(shù)據(jù)恢復(fù),保證數(shù)據(jù)一致性。
            它不大可能被應(yīng)用程序單獨(dú)使用,只能作為事務(wù)子系統(tǒng)的調(diào)用模塊。

            ??? 以上幾部分構(gòu)成了整個Berkeley DB數(shù)據(jù)庫系統(tǒng)。各部分的關(guān)系如下圖所示:
            ???
            ??? 在這個模型中,應(yīng)用程序直接調(diào)用的是數(shù)據(jù)存取子系統(tǒng)和事務(wù)管理子系統(tǒng),這兩個系統(tǒng)進(jìn)而調(diào)用更下層的內(nèi)存管理子系統(tǒng)、
            鎖子系統(tǒng)和日志子系統(tǒng)。
            ???
            ??? 由于幾個子系統(tǒng)相對比較獨(dú)立,所以應(yīng)用程序在開始的時候可以指定哪些數(shù)據(jù)管理服務(wù)將被使用。可以全部使用,
            也可以只用其中的一部分。例如,如果一個應(yīng)用程序需要支持多用戶并發(fā)操作,但不需要進(jìn)行事務(wù)管理,那它就可以
            只用鎖子系統(tǒng)而不用事務(wù)。有些應(yīng)用程序可能需要快速的、單用戶、沒有事務(wù)管理功能的B樹存儲結(jié)構(gòu),那么應(yīng)用程序
            可以使鎖子系統(tǒng)和事務(wù)子系統(tǒng)失效,這樣就會減少開銷。?

            BerkeleyDB存儲功能概述????
            ???
            ??? Berkeley DB所管理數(shù)據(jù)的邏輯組織單位是若干個獨(dú)立或有一定關(guān)系的數(shù)據(jù)庫(database),
            每個數(shù)據(jù)庫由若干記錄組成,這些記錄全都被表示成(key,value)的形式.

            ??? 如果把一組相關(guān)的(key,value)對也看作一個表的話,那么每一個數(shù)據(jù)庫只允許存放一個table,
            這一點(diǎn)不同于一般的關(guān)系數(shù)據(jù)庫。實(shí)際上,在Berkeley DB中所提到的“數(shù)據(jù)庫”,相當(dāng)于一般關(guān)系數(shù)據(jù)庫系統(tǒng)中的表;
            而“key/data”對相當(dāng)于關(guān)系數(shù)據(jù)庫系統(tǒng)中的行(rows);Berkeley DB不提供關(guān)系數(shù)據(jù)庫中列直接訪問的功能,
            而是在“key/data”對中的data項中通過實(shí)際應(yīng)用來封裝字段(列)。

            ??? 在物理組織上,每一個數(shù)據(jù)庫在創(chuàng)建的時候可以由應(yīng)用程序根據(jù)其數(shù)據(jù)特點(diǎn)來選擇一種合適的存儲結(jié)構(gòu)。
            可供選擇的四種文件存儲結(jié)構(gòu)分別是:哈希文件、B樹、定長記錄(隊列)和變長記錄(基于記錄號的簡單存儲方式)。

            ??? 一個物理的文件中可以只存放一個單獨(dú)的數(shù)據(jù)庫,也可以存放若干相關(guān)或不相關(guān)的數(shù)據(jù)庫,而且這些數(shù)據(jù)庫
            可以分別采用除隊列之外任意不同的組織方式,以隊列組織的數(shù)據(jù)庫只能單獨(dú)存放于一個文件,不能同其他存儲類型混合存放。

            ??? 一個文件除了受最大文件長度和存儲空間的約束之外,理論上可以存儲任意多個數(shù)據(jù)庫。
            因此系統(tǒng)定位一個數(shù)據(jù)庫通常需要兩個參數(shù)——“文件名”和“數(shù)據(jù)庫名”,這也是Berkeley DB不同于
            一般關(guān)系數(shù)據(jù)庫的地方。

            ?? Berkeley DB存儲系統(tǒng)為應(yīng)用程序提供了一系列的接口函數(shù),用于對數(shù)據(jù)庫的管理和操作。其中包括:
            ????? (1)數(shù)據(jù)庫的創(chuàng)建、打開、關(guān)閉、刪除、重命名等,以及對數(shù)據(jù)的檢索和增刪改操作;
            ????? (2)提供一些附加的功能,例如讀取數(shù)據(jù)庫狀態(tài)信息、讀取所在文件的信息、讀取所在數(shù)據(jù)庫環(huán)境的信息、
            清空數(shù)據(jù)庫的內(nèi)容、數(shù)據(jù)庫的同步備份、版本升級、提示出錯信息等等;
            ????? (3)系統(tǒng)還提供了游標(biāo)機(jī)制,用于存取和訪問成組的數(shù)據(jù),以及對兩個或多個相關(guān)數(shù)據(jù)庫進(jìn)行關(guān)聯(lián)和等值連接操作;
            ????? (4)系統(tǒng)還給出了一些接口函數(shù)用于對存取策略進(jìn)行優(yōu)化配置,比如應(yīng)用程序可以自己設(shè)置B樹的排序比較函數(shù)、
            每頁中存放key的最少數(shù)目,哈希桶的填充因子、哈希函數(shù)、哈希表最大長度,隊列的最大長度,數(shù)據(jù)庫存放的字節(jié)順序,
            底層存儲頁的大小,內(nèi)存分配函數(shù),高速緩存的大小,定長記錄的大小和填充位,變長記錄所用的分隔符等等。
            ????

            轉(zhuǎn)自(http://dev.csdn.net/article/39/39637.shtm)

            posted on 2006-12-14 10:21 Sword.Hell blog 閱讀(483) 評論(1)  編輯 收藏 引用 所屬分類: 使用Berkeley DB

            FeedBack:
            # re: Berkeley DB概述(轉(zhuǎn)1) 2008-03-19 23:02 yangjin
            有沒有人知道berkeley db 和vc++6 怎么一起使用啊  回復(fù)  更多評論
              
            国产日韩欧美久久| 久久久久亚洲AV片无码下载蜜桃| 久久香蕉国产线看观看精品yw| 久久精品99久久香蕉国产色戒 | 99精品久久精品一区二区| 国内高清久久久久久| 国产成人久久激情91| 人人狠狠综合88综合久久| 久久久久久久综合日本亚洲 | 欧美va久久久噜噜噜久久| 久久久久亚洲国产| 国产91色综合久久免费| 久久精品国产亚洲AV嫖农村妇女 | 久久久黄色大片| 无遮挡粉嫩小泬久久久久久久 | 三上悠亚久久精品| 久久久久久久亚洲Av无码| 免费国产99久久久香蕉| 久久av高潮av无码av喷吹| 无码国内精品久久人妻麻豆按摩 | 狠狠综合久久综合中文88| 久久综合一区二区无码| 免费无码国产欧美久久18| 69久久精品无码一区二区| 91久久香蕉国产熟女线看| 青青久久精品国产免费看 | 亚洲精品无码专区久久同性男| 久久精品桃花综合| 精品久久8x国产免费观看| 狠狠综合久久综合中文88| 无码国内精品久久人妻| 99久久国产免费福利| 久久亚洲sm情趣捆绑调教| 久久无码av三级| 精品综合久久久久久97| 99久久精品免费看国产| 久久人人爽人人爽人人片av麻烦| 99久久超碰中文字幕伊人| 国产精品久久久久久五月尺| 成人久久精品一区二区三区| 怡红院日本一道日本久久 |