嵌入數據庫 Berkeley DB 簡介
ORACLE Berkeley DB(BDB)是一個高性能的,嵌入數據庫編程庫,和C語言,C++,Java,Perl,Python,Tcl以及其他很多語言都有應用程序編程界面。Berkeley DB可以保存任意類型的鍵/值對,而且可以為一個鍵保存多個數據。Berkeley DB可以支持數千的并發線程同時操作數據庫,支持最大256TB的數據,廣泛用于各種操作系統包括大多數Unix類操作系統和Windows操作系統以及實時操作系統。
源起
Berkeley DB最先由伯克利加州大學為了移除受到AT&T限制的程式碼,從BSD 4.3到4.4時所改寫的軟體。在1996年時,網景公司希望Berkeley DB的作者群改善函式庫,以配合網景公司所需要的LDAP伺服器,以及在Netscape 瀏覽器,因此促成了Sleepycat Software(在2006年時2月時Sleepycat Software被甲骨文公司所買下)。
Berkeley DB以Sleepycat Public License發行(該授權條款為OSI及FSF所認可的條款)。發行時包括了完整的程式碼、編譯工具、測試套件,以及說明文件。由於良好的程式碼的品質以及工具程式,Berkeley DB常被其他開放原始碼軟體所使用。對於不想使用Sleepycat Public License的開發團體,甲骨文公司也提供了其他付費的授權方式。
Berkeley DB包含有與某些經典Unix數據庫編程庫兼容的接口,包括:dbm,ndbm和hsearch。
特征
Berkeley DB運行在大多數的操作系統中,例如大多數的UNIX系統, 和windows系統,以及實時操作系統。
Berkeley DB 還擁有對一些老的UNIX數據庫,例如dbm, ndbm und hsearch的兼容接口.
對于在java系統中的使用,Berkeley DB提供了一個壓縮成jar單個文件的java版本。 這個版本可以運行在java虛擬機上使用,并且擁有和C語言版本相同的所有操作和功能。
Berkeley DB XML,是一個接口,通過它可以實現對XML數據存貯的支持。對XML數據的訪問,會使用相應的查詢語句如Xquery, Xpath。
Berkeley DB只支持單一的數據結構,它的所有數據包括兩個部分:key 和 data.
Berkeley DB原則上是為嵌入式數據庫設計的。
體系結構
Berkeley DB以擁有比Microsoft SQL Server和Oracle等數據庫系統而言更簡單的體系結構而著稱。例如,它不支持網絡訪問—程序通過進程內的API訪問數據庫。 他不支持SQL或者其他的數據庫查詢語言,不支持表結構和數據列。 訪問數據庫的程序自主決定數據如何儲存在記錄里,Berkeley DB不對記錄里的數據進行任何包裝。記錄和它的鍵都可以達到4G字節的長度。
盡管架構很簡單,Berkeley DB卻支持很多高級的數據庫特性,比如ACID 數據庫事務處理, 細粒度鎖, XA接口,熱備份以及同步復制。
使用Berkeley DB的程式
Berkeley DB是一些輕量級目錄訪問協議服務器,數據庫系統以及其他很多商業和[開源]應用的底層存儲系統。下面是使用了Berkeley DB的知名軟件的名單。
- Subversion - 一種設計用來代替CVS的版本控制系統。
- KDevelop - 一個自由軟件,Linux和其他Unix類操作系統下的C/C++集成開發環境。
- Sun Grid Engine - 一個開源 cluster 軟件。
- Movable Type - California編寫的一個基于Six Apart的Blog系統。
- Caravel CMS - 一個開源的 內容管理系統,原為超過2000家的Mennonite Church組織設計。
- OpenLDAP - 一個免費的,開源的輕量級目錄訪問協議的實現。
- KLibido - 一個免費的,開源的新聞組閱讀器,為二進制格式下載優化。
- Citadel - 一個開源的群件平臺,全部數據存儲,包括信息庫,都保存在Berkeley DB內。
- Bogofilter - 一個開源 spam過濾器,他的單詞表使用Berkeley DB保存。
MySQL與Berkeley DB
作為全世界最流行的輕量級數據庫之一,MySQL也曾經采用過Berkeley DB作為其底層數據引擎,但因Berkeley DB最終被數據庫廠商Oracle收購,并且改變了其版權許可協議性質,所以MySQL不再使用其作為數據引擎之一。