1. 程式人生 > >關於bdb(barkeley database)資料庫的總結

關於bdb(barkeley database)資料庫的總結

BerkeleyDB(BDB)
優點
嵌入式資料庫
KV型資料庫檔案型
資料庫歷史悠久、成熟、穩定、易佈署、易運維、高效能跨語言支援全面
缺點
不支援直接網路訪問資料共享
不方便不支援SQL(現在已支援,但應用的不多)
使用bdb在pom檔案中加入依賴:


com.sleepycat
je
3.3.75

  <repository>
       <id>oracleReleases</id>
       <name>Oracle Released Java Packages</name>        
       <url>http://download.oracle.com/maven</url>        
       <layout>default</layout>
  </repository>

BDB掌握之API應用步驟
拆解資料庫
環境變數配置
資料庫CRUD操作
資料庫關閉資料庫
環境變數配置

/** * 初始化資料庫引數 */ // 資料庫所在的儲存資料夾
String dbEnvFilePath = “bdb”;
// 資料庫名稱
String database = “weibo”;
// 環境變數的宣告
Environment myDbEnvironment = null;
// 資料庫操作的物件宣告
Database weiboDatabase = null;
try { // 初始化資料儲存根目錄資料夾
File f = new File(dbEnvFilePath);
if (!f.exists()) {
f.mkdirs(); }
// 資料庫配置變數初始化
DatabaseConfig dbConfig = new DatabaseConfig();// 開啟資料庫
dbConfig.setAllowCreate(true); // 初始化環境配置變數,基於該變數去配置環境變數 EnvironmentConfig envConfig = new EnvironmentConfig();
// 當使用的資料庫配置變數不存在的時候,就自動建立
envConfig.setAllowCreate(true);
// 正式初始化資料庫的環境
myDbEnvironment = new Environment(f, envConfig);
// 開啟一個數據庫,如果不存在,則自動建立
weiboDatabase = myDbEnvironment.openDatabase(null, database, dbConfig);
} catch (Exception e) {
e.printStackTrace(); }
資料庫CRUD操作
資料庫建立操作-create
資料記錄的增加操作-Add
// 儲存資料
// 資料的key
String aKey = “key1”;
// 資料的value
String aData = “data”;
try {
// 將key和value都封裝到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(“UTF-8”));
DatabaseEntry theData = new DatabaseEntry(aData.getBytes(“UTF-8”));
// 寫入資料庫
weiboDatabase.put(null, theKey, theData);
// 對該庫進行count操作,檢視有多少條資料
System.out.println(weiboDatabase.count());
} catch (Exception e) {
e.printStackTrace(); }
資料讀取操作-Read// 讀取資料
//要讀取資料的key aKey = “key1”;
加粗樣式try {
//將讀取資料的key封裝到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(“UTF-8”)); /
/將讀取出來的值以二進位制形式放到DatabaseEntry中
DatabaseEntry theData = new DatabaseEntry();
//執行讀取操作
weiboDatabase.get(null, theKey, theData, LockMode.DEFAULT);
//將二進位制資料轉化成字串值
String result =new String(theData.getData(), “utf-8”);
//列印之
System.out.println(result);
} catch (Exception e) {
e.printStackTrace(); }
資料刪除操作-Delete
// 刪除資料
//要刪除的資料的key
aKey = “key1”;
try { /
/將要刪除資料的key封裝到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(“UTF-8”));
//執行刪除操作
weiboDatabase.delete(null, theKey);
//檢視資料庫當前的記錄數
System.out.println(weiboDatabase.count());
} catch (Exception e) {
e.printStackTrace(); }關閉資料庫-Close// 關閉
try {
//先關閉資料庫
if (weiboDatabase != null) {
weiboDatabase.close(); }
//再關閉BDB系統環境變數
if (myDbEnvironment != null) {
myDbEnvironment.sync();
myDbEnvironment.cleanLog();
// 在關閉環境前清理下日誌
myDbEnvironment.close(); }
} catch (Exception e) {
e.printStackTrace(); }