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