轉 Berkeley DB 資料庫的優缺點
Sleepycat軟體公司出品的Berkeley DB是一種在特定的資料管理應用程式中廣泛使用的資料庫系統,在世界範圍內有超過兩億的使用者支援.許多世界知名的廠商,像Amazon, AOL, British Telecom, Cisco Systems, EMC, Ericsson, Google, Hitachi, HP, Motorola, RSA Security, Sun Microsystems, TIBCO 以及 Veritas都依賴於BDB為他們的許多關鍵性應用提供快速的,彈性的,可靠的,並且高性價比的資料管理.
2.以下是chinaunix.net上一位高手給出的解釋,在這裡引用一下。
mysql就是用BDB實現的(mysql的後臺) 。mysql快,BDB比mysql還要快N倍。
BDB併發高於RDBMS。
容量支援可達256TB。
基於HASH支援select資料比RDBMS快。
3.BDB資料庫與其它的幾種資料庫的比較。
BDB資料庫不同與其他幾種資料庫–關係型(Relational databases),面向物件型(Object-oriented databases),網路資料庫(Network databases),它是一種嵌入式(embeded databases)資料庫。
下面先簡要說說BDB與其它幾種資料庫的區別:
(1)它們幾乎都無一例外的採用了結構化查詢語言(SQL),而BDB沒有。
(2)它們幾乎都無一例外的採用了客戶/伺服器模型,而BDB採用的是嵌入式模型。
4. 下面是在網上找的一些有關BDB的資料,解釋了BDB之所以會和當前流行的大多數資料庫不同的一些原因,所引資料未註明出處,後面的翻譯是我自己加的:
(1) BDB是一個開放原始碼的嵌入式資料庫的函式庫,它為應用程式提供彈性的,高效能的,transaction-protected的資料庫管理服務,BDB為資料的訪問和管理提供了簡單的應用程式介面API。
(2) BDB之所以是嵌入式資料庫是因為它是直接連到應用程式中的。它和應用程式在同一記憶體空間執行。其結果是,不管應用程式是執行在同一臺機 器上還是執行在網路上,在進行資料庫操作時,它都無需進行程序間通訊。BDB為許多程式語言提供了函式介面,這些語言包括C, C++, Java, Perl, Tcl, Python, 和 PHP。所有的資料庫操作都發生在函式庫內部。多個程序,或者是一個程序中的多個執行緒,都可以同時使用BDB,因為它們實際是在呼叫BDB函式庫。一些像 locking, transaction logging, shared buffer management, memory management等等之類的低階服務都可以由函式庫透明地處理。
(3) BDB函式庫是高度可移植的。它可以執行在幾乎所有的UNIX和LINUX系統之上,也支援WINDOWS和多種嵌入式實時作業系統。它 既可以執行在32位系統上,也可以執行在64位系統上。它活躍在高階伺服器,桌面系統,掌上電腦,set-top boxes,網路交換機以及其它的一些領域。一旦BDB被連線到應用當中以後,終端使用者一般是不知道後端資料庫的存在的。
(4) BDB在許多方面都是彈性的。函式庫本身非常緊湊(在常見的機器體系上大約只佔用不到300K的text空間,但是它可以操作多達 256TB的資料。它也支援高強度的併發操作,可以同時允許數以千計的使用者在同一個資料庫進行操作。在高階伺服器領域,BDB是足夠小的,它可以在高度受 限的嵌入式系統上執行,但卻可以利用高達GB量級的記憶體空間和高達TB量級的磁碟空間。
(5) BDB在嵌入式應用方面的效能比關係型資料庫和麵向物件的資料庫優越的原因是多方面的。首先,因為函式庫和應用是執行在同一地址空間中 的,省掉了資料庫操作時的程序間通訊。而眾所周知,不管是在單機上還是在分散式系統上,程序間通訊所花的時間遠多於函式呼叫所要的時間。其次,因為BDB 對所有的操作提供了簡潔的函式呼叫介面,無需對查詢語言進行解析,也不需要預執行。
(6) 與其他大多數資料庫系統相比,BDB提供了相對簡單的資料訪問服務。BDB只支援對記錄所做的幾種邏輯操作。它們是:
在表中插入一條記錄。
從表中刪除一條記錄。
通過查詢鍵(key)從表中查詢一條記錄。
更新表中已有的一條記錄。
BDB不是一個獨立的資料庫伺服器。它是一個函式庫,和呼叫它的應用程式是執行在同一地址空間中的。可以把BDB作為資料庫管理系統來構 建伺服器程式。比如,有許多商業的和開源的輕量級目錄訪問協議(LDAP)伺服器都使用BDB儲存記錄。LDAP客戶端通過網路連線到伺服器。伺服器呼叫 BDB的API來查詢記錄並返回給客戶。而在它本身而言,BDB卻不是資料庫的伺服器端。
所以,BDB是一種完全不同於其它資料庫管理系統的資料庫,而且它也不是一個數據庫伺服器端。
當面對的是對效能,規模和可靠性要求都比較高的嵌入式應用的時候,BDB是理想的資料庫管理系統。但對於要求多種不同服務的應用而言,選擇它是不適當的。
BDB的初衷是提供快速的,可靠的,transaction-protected的記錄儲存。函式庫本身並沒有提供對互動查詢的支援,也沒有提供 圖形化的報表工具,或者一些其它的資料庫管理系統提供的服務。我們一直在致力於保持函式庫的短小和簡練,這樣做,可以使得bug出現的機會大大減小,而且 因為只有很少的程式碼需要執行,我們可以保證資料庫一直快速的執行。如果你的應用正好需要的是這樣的一套功能的話,那麼BDB幾乎一定是你的首選物件。
5.我個人的觀點
BDB之所以適合LDAP,一個關鍵的因素是它可以保證LDAP的快速響應.因為BDB本身是一種嵌入式的資料庫,速度快是它最大的特點,也是它 和其他資料庫系統相比最大的優勢.我們再來看LDAP,LDAP是一種一旦資料建立就很少需要改動的資料庫,並且它最常用的操作是讀取,查詢,搜尋等等不 改變資料庫內容的操作.而讓BDB來做這幾種事情無疑是最好的選擇.這樣,即使在有大量使用者提交資料庫查詢的情況下,LDAP仍能快速反饋給使用者有用信 息.所以,速度的考慮是LDAP選用BDB的最大因素.這也是目前絕大多數的LDAP伺服器都選用BDB的根本原因.