BerkeleyDB存儲(chǔ)功能概述
2024-07-21 02:35:48
供稿:網(wǎng)友
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ù)只答應(yīng)存放一個(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ǔ)類型混合存放。一個(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)記錄所用的分隔符等等。