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