嵌入式數據庫在Java中的應用[1]
iterator.close();
dbFile.close(0);
在運行Berkeley DB的程序時勿必在系統(tǒng)環(huán)境變量PATH中設置libdb41.dll和 libdb_java41.dll所在的路徑。
4. Berkeley DB的存儲模式
Berkeley DB提供了四種存儲數據的模式:Btree,Hash,Queue和Recno。在打開數據庫的時候要指定一種存儲模式,比如上例中open()方法中的參數Db.DB_BTREE就是指定以Btree模式打開數據庫。
Btree模式是以排序的二叉樹的方式存儲,Hash是以線性哈希表的方式存儲。Queue用邏輯記錄號做為鍵值,以定長的數據為記錄值。Recno方式也以邏輯記錄號做為鍵值,但可以保存定長或變長的記錄值。這里提到的邏輯記錄號有兩種,可變的和固定的??勺冞壿嬘涗浱枙鶕祿涗浀脑黾优c刪除做相應的變化。比如在數據庫中共有100條記錄,如果刪除第80條記錄,那么第81條記錄的邏輯記錄號會自動變成80,以此類推,第100條記錄邏輯記錄號會變成99。固定的邏輯記錄號則無論數據庫如何操作都不會有變化。Queue模式下,邏輯記錄號只能是固定方式。
Recno模式則可通過配置來選擇是采用那種類型的記錄號作為鍵值。Btree模式也可以通過設置,將可變的邏輯記錄號做為鍵值。
這幾種存儲模式各有優(yōu)缺點,要根據具體的需求來選擇。當鍵值不想用邏輯記錄號時Btree或Hash是必須的選擇。Btree方式比較適合連續(xù)的順序讀取,比如,當鍵值是時間值,如果經常有從某一時間點開始連續(xù)讀取后繼的記錄的操作,Btree是一種很好的選擇。對隨機的跳躍式讀取,Hash模式則更為恰當。Queue和Recno都以記錄號為鍵值,但前者適合先進先出的讀取方式。
Recno則通常是存取變長文本記錄的理想存儲模式。
5. Berkeley DB Environment的概念
Berkeley DB Environment為一組數據庫同時提供參數設置。更為重要的是,如果要應用更高級的特性,必須要使用Environment功能,比如在想要對保存的數據進行加密存儲時。
6. 更多特點
除了最基本的插入、查詢、刪除功能以外,Berkeley DB還提供了一些特性,比如Transaction,數據加密,同步加鎖控制,錯誤日志等功能。下面的圖片是Berkeley DB功能示意圖。
二. SQLite
1. 簡介
相信PHP的開發(fā)人員一定不會對SQLite感到陌生,因為在PHP5中已經集成了這個輕巧的內嵌式數據庫產品。SQLite與Berkeley DB相比,在操作語句上更類似關系型數據庫的產品。絕大多數標準的SQL92語句SQLite都能支持。
SQLite的版權允許無任何限制的應用,包括商業(yè)性的產品。在參考鏈接二上提供的SQLite官方主站上可以下載到編譯后的SQLite程序。但推薦應用CVS工具下載最新版本的SQLite源代碼。如果在*nux平臺下,可直接用make編譯。如果在Windows平臺,常用的有兩種方法,
一是應用在Windows平臺下的Linux仿真程序,如MingW或Cygwin提供的make來編譯。
二是應用MS VC平臺編譯。后者設置略有麻煩,但可仿照參考鏈接五上提供的MS VC6工程文件的樣例。應用到這個樣例的時候,要注意的是由于SQLite源代碼在不斷更新,如果直接應用樣例所提供的VC6工程文件編譯會出現(xiàn)一些問題,讀者要根據具體的情況稍微調整一下編譯的設置。
評論