国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

Berkeley DB 概述

2024-07-21 02:07:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

berkeley db 概述

皮東

    berkeley db是由美國(guó)sleepycat software公司開(kāi)發(fā)的一套開(kāi)放源碼的嵌入式數(shù)據(jù)庫(kù)的程序庫(kù)(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)用程序開(kāi)發(fā)者提供工業(yè)級(jí)強(qiáng)度的
數(shù)據(jù)庫(kù)服務(wù)而設(shè)計(jì)的。其主要特點(diǎn)如下:

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

    berkeley db為多種編程語(yǔ)言提供了api接口,其中包括c、c++、java、perl、tcl、python和php,所有的數(shù)據(jù)庫(kù)操作
都在程序庫(kù)內(nèi)部發(fā)生。多個(gè)進(jìn)程,或者同一進(jìn)程的多個(gè)線程可同時(shí)使用數(shù)據(jù)庫(kù),有如各自單獨(dú)使用,底層的服務(wù)如加鎖、
事務(wù)日志、共享緩沖區(qū)管理、內(nèi)存管理等等都由程序庫(kù)透明地執(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)用程序中,終端用戶(hù)一般根本感覺(jué)不到有一個(gè)數(shù)據(jù)庫(kù)
系統(tǒng)存在。

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

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

    (2)因?yàn)閎erkeley db對(duì)所有操作都使用一組api接口,因此不需要對(duì)某種查詢(xún)語(yǔ)言進(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ù)庫(kù)進(jìn)程包內(nèi)部核心組件,而其他子系統(tǒng)都存在于berkeley db數(shù)據(jù)庫(kù)進(jìn)程包的外部。  

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

    1.數(shù)據(jù)存取子系統(tǒng)
    數(shù)據(jù)存取(access methods)子系統(tǒng)為創(chuàng)建和訪問(wèn)數(shù)據(jù)庫(kù)文件提供了多種支持。berkeley db提供了以下四種文件存儲(chǔ)方法:
哈希文件、b樹(shù)、定長(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ǔ)類(lèi)型的文件進(jìn)行混合操作。

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

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

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

    它也可以被應(yīng)用程序單獨(dú)使用來(lái)對(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)提供多用戶(hù)讀取和單用戶(hù)修改同一對(duì)象的共享控制。
數(shù)據(jù)存取子系統(tǒng)可利用該子系統(tǒng)獲得對(duì)頁(yè)或記錄的讀寫(xiě)權(quán)限;事務(wù)子系統(tǒng)利用鎖機(jī)制來(lái)實(shí)現(xiàn)多個(gè)事務(wù)的并發(fā)控制。
   
    該子系統(tǒng)也可被應(yīng)用程序單獨(dú)采用。鎖子系統(tǒng)適用于一個(gè)靈活的、快速的、可設(shè)置的鎖管理器。
   
    5.日志子系統(tǒng)   
    日志(logging)子系統(tǒng)采用的是先寫(xiě)日志的策略,用于支持事務(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ù)庫(kù)系統(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)用程序在開(kāi)始的時(shí)候可以指定哪些數(shù)據(jù)管理服務(wù)將被使用。可以全部使用,
也可以只用其中的一部分。例如,如果一個(gè)應(yīng)用程序需要支持多用戶(hù)并發(fā)操作,但不需要進(jìn)行事務(wù)管理,那它就可以
只用鎖子系統(tǒng)而不用事務(wù)。有些應(yīng)用程序可能需要快速的、單用戶(hù)、沒(méi)有事務(wù)管理功能的b樹(shù)存儲(chǔ)結(jié)構(gòu),那么應(yīng)用程序
可以使鎖子系統(tǒng)和事務(wù)子系統(tǒng)失效,這樣就會(huì)減少開(kāi)銷(xiāo)。 

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

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

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 迁安市| 海原县| 泰和县| 香格里拉县| 鹤山市| 和林格尔县| 余江县| 白山市| 高陵县| 丽水市| 连州市| 岗巴县| 治多县| 满城县| 谷城县| 沂源县| 衡阳市| 江都市| 苏尼特右旗| 大洼县| 乾安县| 乌什县| 麻江县| 平江县| 石嘴山市| 长垣县| 南和县| 邹平县| 九龙城区| 广东省| 永善县| 余姚市| 霞浦县| 博爱县| 淄博市| 郑州市| 彩票| 高陵县| 大埔县| 盐城市| 若尔盖县|