• <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年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊(cè)

            ACE資料

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜


            皮東

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

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

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

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

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

            ??? 可伸縮(Scalable):這一點(diǎn)表現(xiàn)在很多方面。Database library本身是很精簡(jiǎn)的(少于300KB的文本空間),但它
            能夠管理規(guī)模高達(dá)256TB的數(shù)據(jù)庫。它支持高并發(fā)度,成千上萬個(gè)用戶可同時(shí)操縱同一個(gè)數(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)因?yàn)閿?shù)據(jù)庫程序庫同應(yīng)用程序在相同的地址空間中運(yùn)行,所以數(shù)據(jù)庫操作不需要進(jìn)程間的通訊。在一臺(tái)機(jī)器的
            不同進(jìn)程間或在網(wǎng)絡(luò)中不同機(jī)器間進(jìn)行進(jìn)程通訊所花費(fèi)的開銷,要遠(yuǎn)遠(yuǎn)大于函數(shù)調(diào)用的開銷;

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


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


            ??? Berkeley DB由五個(gè)主要的子系統(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)程包的外部。??

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

            ??? 1.數(shù)據(jù)存取子系統(tǒng)
            ??? 數(shù)據(jù)存取(Access Methods)子系統(tǒng)為創(chuàng)建和訪問數(shù)據(jù)庫文件提供了多種支持。Berkeley DB提供了以下四種文件存儲(chǔ)方法:
            哈希文件、B樹、定長(zhǎng)記錄(隊(duì)列)和變長(zhǎng)記錄(基于記錄號(hào)的簡(jiǎn)單存儲(chǔ)方式),應(yīng)用程序可以從中選擇最適合的文件組織結(jié)構(gòu)。
            程序員創(chuàng)建表時(shí)可以使用任意一種結(jié)構(gòu),并且可以在同一個(gè)應(yīng)用程序中對(duì)不同存儲(chǔ)類型的文件進(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)對(duì)Berkeley DB所使用的共享緩沖區(qū)進(jìn)行有效的管理。它允許同時(shí)訪問數(shù)據(jù)庫的多個(gè)進(jìn)程或者
            進(jìn)程的多個(gè)線程共享一個(gè)高速緩存,負(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ù)管理功能。它允許把一組對(duì)數(shù)據(jù)庫的修改看作一個(gè)原子單位,
            這組操作要么全做,要么全不做。在默認(rèn)的情況下,系統(tǒng)將提供嚴(yán)格的ACID事務(wù)屬性,但是應(yīng)用程序可以選擇不使用系統(tǒng)所作的
            隔離保證。該子系統(tǒng)使用兩段鎖技術(shù)和先寫日志策略來保證數(shù)據(jù)庫數(shù)據(jù)的正確性和一致性。

            ??? 它也可以被應(yīng)用程序單獨(dú)使用來對(duì)其自身的數(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)提供多用戶讀取和單用戶修改同一對(duì)象的共享控制。
            數(shù)據(jù)存取子系統(tǒng)可利用該子系統(tǒng)獲得對(duì)頁或記錄的讀寫權(quán)限;事務(wù)子系統(tǒng)利用鎖機(jī)制來實(shí)現(xiàn)多個(gè)事務(wù)的并發(fā)控制。
            ???
            ??? 該子系統(tǒng)也可被應(yīng)用程序單獨(dú)采用。鎖子系統(tǒng)適用于一個(gè)靈活的、快速的、可設(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)成了整個(gè)Berkeley DB數(shù)據(jù)庫系統(tǒng)。各部分的關(guān)系如下圖所示:
            ???
            ??? 在這個(gè)模型中,應(yīng)用程序直接調(diào)用的是數(shù)據(jù)存取子系統(tǒng)和事務(wù)管理子系統(tǒng),這兩個(gè)系統(tǒng)進(jìn)而調(diào)用更下層的內(nèi)存管理子系統(tǒng)、
            鎖子系統(tǒng)和日志子系統(tǒng)。
            ???
            ??? 由于幾個(gè)子系統(tǒng)相對(duì)比較獨(dú)立,所以應(yīng)用程序在開始的時(shí)候可以指定哪些數(shù)據(jù)管理服務(wù)將被使用。可以全部使用,
            也可以只用其中的一部分。例如,如果一個(gè)應(yīng)用程序需要支持多用戶并發(fā)操作,但不需要進(jìn)行事務(wù)管理,那它就可以
            只用鎖子系統(tǒng)而不用事務(wù)。有些應(yīng)用程序可能需要快速的、單用戶、沒有事務(wù)管理功能的B樹存儲(chǔ)結(jié)構(gòu),那么應(yīng)用程序
            可以使鎖子系統(tǒng)和事務(wù)子系統(tǒng)失效,這樣就會(huì)減少開銷。?

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

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

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

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

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

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

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

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

            FeedBack:
            # re: Berkeley DB概述(轉(zhuǎn)1) 2008-03-19 23:02 yangjin
            有沒有人知道berkeley db 和vc++6 怎么一起使用啊  回復(fù)  更多評(píng)論
              
            久久综合狠狠色综合伊人| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产综合免费精品久久久| 人人狠狠综合久久亚洲婷婷| 久久99久久成人免费播放| 天堂无码久久综合东京热| 婷婷久久香蕉五月综合加勒比| 国产情侣久久久久aⅴ免费| 久久e热在这里只有国产中文精品99| 四虎久久影院| 狠狠狠色丁香婷婷综合久久俺| 色欲综合久久躁天天躁| 国产综合久久久久久鬼色| 亚洲国产成人精品女人久久久 | 伊人久久大香线蕉AV一区二区| 久久精品国产99国产精品亚洲| 欧美777精品久久久久网| 狠狠色丁香久久婷婷综合蜜芽五月| 国产一区二区三区久久| 日产精品久久久久久久| 久久青青草原国产精品免费 | 久久久久久精品免费看SSS| 久久青草国产手机看片福利盒子| 久久婷婷人人澡人人爽人人爱| 99久久精品免费| 国产Av激情久久无码天堂| 久久人妻无码中文字幕| 久久亚洲中文字幕精品一区| 欧美激情精品久久久久| 1000部精品久久久久久久久| 无码久久精品国产亚洲Av影片| 三级片免费观看久久| 久久久久久无码国产精品中文字幕| 国产69精品久久久久9999APGF| 国内精品久久久久久久coent | 996久久国产精品线观看| 狠狠色综合网站久久久久久久高清| 久久久久久极精品久久久| 精品久久久久久无码中文野结衣| 99国内精品久久久久久久| 好久久免费视频高清|