Berkeley DB的訪問方法有四種BTree、Hash、Queue、Recno
他們?cè)贒B創(chuàng)建時(shí)選擇,而且只能在創(chuàng)建時(shí)選擇。一點(diǎn)選定某一個(gè)訪問方法,
在使用中不能改變。
BTree 數(shù)據(jù)被存儲(chǔ)在一個(gè)排序的平衡樹結(jié)構(gòu)中。key和value都可以是簡(jiǎn)單數(shù)
據(jù)(如整型,字符串),也可以是復(fù)雜數(shù)據(jù)(如結(jié)構(gòu))。當(dāng)有多個(gè)數(shù)據(jù)的key
相同時(shí),可以有復(fù)本。
Hash 數(shù)據(jù)存儲(chǔ)在一個(gè)擴(kuò)展的線性hash表中。其他的特性象BTree。
Queue 數(shù)據(jù)存儲(chǔ)在一個(gè)隊(duì)列中,記錄是定長(zhǎng)的。key為一個(gè)邏輯數(shù),不由用戶
選擇類型。在尾部插入記錄,在頭部刪除記錄和取出記錄非常的快。提供了
記錄水平縮,提高在并發(fā)下的訪問。
Recno 數(shù)據(jù)可以是定常或是變長(zhǎng)的記錄。其他特性象Queue。key也是一個(gè)邏輯數(shù)。
數(shù)據(jù)庫訪問方法的選擇。
根據(jù)key可否用戶定義分為BTree、Hash一組,Queue、Renco一組。
BTree與Hash之間的選擇
如果數(shù)據(jù)量不,能被放到內(nèi)存中。這種情況下選擇BTree。即在小數(shù)據(jù)量的情況下
選用BTree,原因是在利用key來定為記錄時(shí),成功的幾率大些。Hash有退步算法。
但是在大數(shù)據(jù)量的情況下,由于數(shù)據(jù)并不能都在數(shù)據(jù)庫中,要訪問磁盤,并且BTree
要維護(hù)的內(nèi)部信息大于Hash,訪問磁盤的幾率大于Hash,會(huì)造成訪問的瓶頸。所以
在大數(shù)據(jù)量下選擇Hash。
Queue與Recno之間的選擇
用在多并發(fā)下最好用Queue。但是如果記錄是變長(zhǎng)的,就只能選Recno了。在其它的情
況下,兩者沒有明顯的差別。
Berkeley DB支持從非常小的數(shù)據(jù)庫到256T的數(shù)據(jù)容量的數(shù)據(jù)庫。單個(gè)key或recode
最大可以為4G的數(shù)據(jù)。
Berkeley DB的數(shù)據(jù)庫被存儲(chǔ)為二進(jìn)制的格式,有利于平臺(tái)的移植。
Berkeley DB支持并發(fā)的訪問,但是不能用在NSF(網(wǎng)絡(luò)文件系統(tǒng))下。因?yàn)闊o法定位和
獲得數(shù)據(jù)庫的環(huán)境(在環(huán)境中設(shè)置對(duì)并發(fā)的控制)。
Berkeley DB的環(huán)境(Environments)提供了以下的功能
1 多數(shù)據(jù)庫文件(Multi-database files)。將多個(gè)數(shù)據(jù)存儲(chǔ)在一個(gè)物理文件中。
2 提供多線程或多進(jìn)程的支持(Multi-thread and multi-process support)。
3 事務(wù)處理
4 高可用性(重復(fù)性)支持。即一個(gè)主數(shù)據(jù)庫,和多個(gè)提供只讀能力的復(fù)制數(shù)據(jù)庫
5 日志子系統(tǒng)。
posted on 2007-05-26 11:26
walkspeed 閱讀(3040)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C++語言 、
Berkeley DB