天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

DB(BDB)與SQLite對比

  嵌入式數據庫無需安裝,體積小巧,速度又快,在很多場合可以替代目前流行的MySQL,SQL Server等大中型數據庫。本文介紹兩種嵌入式數據庫產品:Berkeley DB和SQLite,并著重討論它們與Java之間的接口。

  通常我們采用各種數據庫產品來實現對數據的存儲、檢索等功能,例如,Oracle,SQL Server,MySQL等。這些產品除提供基本的查詢,刪除,添加等功能外,也提供了很多高級特性,如觸發器,存儲過程,數據備份恢復,全文檢索功能 等。但實際上,很多的應用,僅僅利用到了這些數據庫產品的基本特性而已。而且在一些小型應用上,或者某些特殊場合的應用,比如桌面程序,這些數據庫產品就 明顯有一些臃腫。在這些情況下,嵌入式數據庫的優勢就特別明顯了。

  嵌入式數據庫無須獨立運行的數據庫引擎,它是由程序直接調用相應的 API去實現對數據的存取操作。更直白的講,嵌入式數據庫是一種具備了基本數據庫特性的數據文件。嵌入式數據庫與其它數據庫產品的區別是,前者是程序驅動 式, 而后者是引擎響應式。嵌入式數據庫的一個很重要的特點是它們的體積非常小,編譯后的產品也不過幾十K。這不但對桌面程序的數據存儲方案是一個很好的選擇, 也使得它們可以應用到一些移動設備上。同時,很多嵌入式數據庫在性能上也優于其它數據庫,所以在高性能的應用上也常見嵌入式數據庫的身影。

  下面介紹的是兩個開放源代碼的嵌入式數據庫,Berkeley DB和SQLite。同時側重介紹如何應用Java連接這兩種嵌入式數據庫。

  一. Berkeley DB

  1. 簡介

  Berkeley DB是一款健壯的,高速的工業級嵌入式數據庫產品,你可以在它的官方主頁(見參考鏈接一)上發現很多知名的公司都采用了這款嵌入式數據庫。 Berkeley DB的一個很重要的特點是就是高速存儲。在高流量,高并發的情況下,Berkeley DB要比非嵌入式的數據庫表現得更加出色。所以在一些技術實現上,Berkeley DB被作為大型關系數據庫的中間數據緩沖層,用來快速的保存數據,可能會在適當的時刻再導入到大型數據庫中,進而應用大型數據庫所提供的更為高級的特性。

  Berkeley DB雖然是開源的產品,但對某些條件下的商業性應用,卻不是免費的,而且價格頗為昂貴。這些商業條件排除了開源的情況,不發放分布版本的情況,等等。比 如,如果你的程序是開放源代碼的或者僅僅應用到單一的網站上,在這種情況下,Berkeley DB是免費的。

  2. 獲得Java與Berkeley DB的接口

  Berkeley DB目前的版本是4.1.25,自帶了Java接口。下載的壓縮包中包含C和Java語言的源代碼和編譯配置文件。在Windows平臺,可以用MS Visual C++ 6.0或MS VC.NET編譯。用VC6編譯的操作如下介紹:在源代碼的build_win32路徑下打開VC的工程文件,之后在Build菜單中的Set Active Configuration選擇db_Java win32 release編譯選項。在VC的Tools菜單Options選項中指定JNI.H等Java本地化接口編譯時所需要頭文件的位置。

  你會在JDK的 include路徑下找到這些頭文件, 例如加入的路徑可能會是這樣的:C:/jdk1.4/include和C:/jdk1.4/include/ win32。最后在Tools菜單中Options選項還要設置Javac.exe和Jar.exe的執行路徑,這個設置會使VC開發環境也能調用 Java編譯器,從而在VC環境下直接完成對Java接口類的編譯和打包。在編譯后,在release路徑下的文件中找到db.jar, libdb41.dll, libdb_Java41.dll,這三個文件組成了Berkeley DB的Java接口程序包。

  3. 應用Java與Berkeley DB的接口

  Berkeley DB并不是一個關系型的數據庫。不能應用標準的SQL語句對數據庫操作,對它的操作要調用專用的API實現。這些API提供了查詢、插入、刪除等功能。比 如com.sleepycat.db.Db類代表數據庫對象。Db類的put()方法完成的是插入功能,get()方法完成的是讀出數據的功能。 com.sleepycat.db.Dbc是Berkeley DB的游標類,提供了遍歷數據庫記錄的功能。

  Berkeley DB每一個記錄都有一個鍵值和對應的數據值,而鍵值和數據必須是類com.sleepycat.db.Dbt的對象或其子類的對象。Dbt提供了一些方法 可以將byte數組或Object對象保存到Dbt的對象中去。比如,Dbt類中的set_data(byte[])或set_object (Object)方法。注意到目前Berkeley DB中的Java API命名方法并不符合Java的命名規范,比如set_data()方法應該命名為setData()方法。Berkeley DB許諾在下一個版本中會提供符合命名規范的Java API。

  Berkeley DB對任何存入的數據都是直接原樣存儲到數據文件中去,無論其是二進制數據還是ASCII或Unicode等編碼的文本。通常可以利用這一特性和Java串行化的概念方便的進行數據的存取。例如聲明一個類

   1. public class AccountInfo implements Serializable{  
2. //帳戶信息
3. public String loginName;
4. public String password;
5. public boolean auotLogin;
6. }

it知識庫DB(BDB)與SQLite對比,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 99热精品在线av播放 | 久久re热在线视频精6 | 亚洲精品色播一区二区 | 日本一区不卡在线播放视频免费 | 777米奇色狠狠俺去啦 | 欧美video巨大粗暴18 | 精品国产免费观看久久久 | 在线中文高清资源免费观看 | 最近的2019中文字幕HD | 果冻传媒APP免费网站在线观看 | 两个奶被男人揉了一个晚上 | 青春禁区动漫免费观看 | 国产午夜在线精品三级a午夜电影 | 新妺妺窝人体色WWW 新金梅瓶玉蒲团性奴3 | 97se se| 国产亚洲精品久久孕妇呦呦你懂 | 嗯别插太快好深再深点 | 疯狂小护士 | 秋霞电影网午夜一级鲁丝片 | 亚洲免费观看视频 | 精品久久电影网 | 久久re这里视频只有精品首页 | 9477小游戏| 国产色综合久久无码有码 | 超碰免费视频在线观看 | 天美传媒色情原创精品 | 国产精品麻豆a在线播放 | 四虎影5151毛片在线看 | 香蕉59tv视频 | 色偷拍自怕亚洲在线 | 国产一区二区波多野结衣 | 国产精品7777人妻精品冫 | 色噜噜狠狠一区二区三区 | 把内衣脱了把奶露出来 | 中文字幕无码乱人伦蜜桃 | 亚洲免费无码av线观看 | 在线视频一区二区三区在线播放 | 久久99蜜桃精品麻豆 | 超级碰碰青草久热国产 | 成人伦理影院 | 老司机福利在 线影院 |