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();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值