berkeley db java edition 源码,Berkeley DB Java Edition
本來想寫一篇,發現網上有一篇已經寫的很好了,所以稍微加一些介紹,其他部分尤其是去看它的吧.附帶自己寫的一個connection 代碼.
簡介
Berkeley DB(BDB)是一個高性能的,嵌入式鍵值對(Key/Value Pair)數據庫.Berkeley DB可以支持數千的并發線程同時操作數據庫,支持最大256TB的數據。
而Berkeley DB Java Edition (JE)是一個完全用JAVA寫的,它適合于管理海量的,簡單的數據。
不支持網絡訪問
能夠高效率的處理1到1百萬條記錄,制約JE數據庫的往往是硬件系統,而不是JE本身。
多線程支持,JE使用超時的方式來處理線程間的死瑣問題。
采用簡單的key/value對應的形式。因此不支持SQL或者其他的數據庫查詢語言,不支持表結構和數據列。它的記錄和鍵都可以達到4G字節的長度。
支持很多高級的數據庫特性,比如ACID 數據庫事務處理, 細粒度鎖, XA接口,熱備份以及同步復制。
采用B-Tree結構
允許創建二級庫。這樣我們就可以方便的使用一級key,二級key來訪問我們的數據。
支持RAM緩沖,這樣就能減少頻繁的IO操作。
支持日志。
游標支持。
自己寫的Connection類
package com.spider.bdb;
import java.io.File;
import java.io.FileNotFoundException;
import com.spider.util.CrawlURI;
import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.bind.serial.StoredClassCatalog;
import com.sleepycat.collections.StoredMap;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.EnvironmentLockedException;
public class BDBConnection {
private String homeDirectory = "";
private static final String CLASS_CATALOG = "java_class_catalog";
private Environment env = null;
private StoredClassCatalog javaCatalog = null;
protected Database catalogdatabase = null;
private Database database = null;
private StoredMap pendingUrisDB = null;
/**
* 設置數據庫日志目錄
*/
public BDBConnection(String homeDirectory) {
this.homeDirectory = homeDirectory;
}
/**
* 創建BDB環境配置和數據庫配置,catalog數據庫和應用數據庫
*
* @throws EnvironmentLockedException
* @throws DatabaseException
*/
private void createConnection() {
try {
/*
* 設置Environment Config
*/
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setTransactional(true);
//如果設置了true則表示當環境不存在時候重新創建一個環境,默認為false.
envConfig.setAllowCreate(true);
env = new Environment(new File(homeDirectory), envConfig);
/*
* 設置Database Config
*/
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setTransactional(true);
//如果設置了true則表示當數據庫不存在時候重新創建一個數據庫,默認為false.
dbConfig.setAllowCreate(true);
// 創建 CateLog 庫
catalogdatabase = env.openDatabase(null, CLASS_CATALOG, dbConfig);
javaCatalog = new StoredClassCatalog(catalogdatabase);
// 創建應用庫
database = env.openDatabase(null, homeDirectory, dbConfig);
} catch (EnvironmentLockedException e) {
e.printStackTrace();
} catch (DatabaseException e) {
e.printStackTrace();
}
}
// 使用默認的路徑和緩存大小構造函數
public void openConnection() {
this.createConnection();
// 綁定數據和類類型
EntryBinding keyBinding = new SerialBinding(
javaCatalog, String.class);
EntryBinding valueBinding = new SerialBinding(
javaCatalog, CrawlURI.class);
pendingUrisDB = new StoredMap(database, keyBinding,
valueBinding, true);
}
public StoredMap getMap() {
return this.pendingUrisDB;
}
/**
* 關閉數據庫,關閉環境
*
* @throws DatabaseException
*/
public void closeConnection() {
try {
database.close();
javaCatalog.close();
env.close();
} catch (DatabaseException e) {
e.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的berkeley db java edition 源码,Berkeley DB Java Edition的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 导出excel数字前面的0消失_Exce
- 下一篇: python 异常回溯_关于python