本来想写一篇,发现网上有一篇已经写的很好了,所以稍微加一些介绍,其他部分尤其是去看它的吧.附带自己写的一个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相关推荐

  1. 【Java集合源码剖析】Java集合框架

    2019独角兽企业重金招聘Python工程师标准>>> Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集 ...

  2. java scrollpane源码_JScrollPane用法 Java实例

    时间:2019-10-07 概述:JScrollPane 滚动条 在Java中使用JScrollPane的例子,特别是滚动条的设置等,程序代码中将设置水平与垂直表头.设置scrollPane的边角图案 ...

  3. java中间件源码_《Java中间件技术及其应用开发》PDF下载

    资源名称:<Java中间件技术及其应用开发>PDF 下载 < 内容简介······ 本书使用丰富的案例介绍了使用Java技术进行中间件编程的方法及技巧,包括JSP.Java serV ...

  4. java md5 源码_MD5加密 Java源代码

    public classMD5_Encoding {//RFC1321中定义的标准4*4矩阵的常量定义. static final int S11 = 7, S12 = 12, S13 = 17, S ...

  5. JVM:Java指令源码opcode

    JVM:Java指令源码opcode 关键词 Java 字节码是沟通 JVM 与 Java 程序的桥梁 指令( opcode)由操作码和操作数组成 JVM 翻译字节码( 将 opcode + 操作数翻 ...

  6. java activerecord.db_JFinal 源码分析 [DB+ActiveRecord]

    我记得以前有人跟我说,"面试的时候要看spring的源码,要看ioc.aop的源码"那为什么要看这些开源框架的源码呢,其实很多人都是"应急式"的去读,就像读一篇 ...

  7. java商城源码_java 多商户商城系统源码分享

    三勾商城多商户是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得 ...

  8. JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用

    在现在电商迅速占领市场的时代里,选择开发商城系统已经成为了一种趋势,现在开发搭建商城系统有很多编程语言可以选择,目前在电商里市面上受到很多商家企业的喜爱的便是Java商城系统,那为什么要选择Java电 ...

  9. 仙剑java_xianjian 仙剑游戏JAVA版源码,早期练习保存的资料 Develop 244万源代码下载- www.pudn.com...

    文件名称: xianjian下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 636 KB 上传时间: 2015-10-06 下载次数: 0 提 供 者: 黄 详 ...

最新文章

  1. RabbitMQ 高可用之如何确保消息成功消费
  2. 使用docker registry建立私有镜像仓库
  3. 【MySQL】存储过程中,怎么把多个select结果,合并成一个结果集返回?
  4. 【BZOJ1976】[BeiJing2010组队]能量魔方 Cube 最小割
  5. 解决eclipse报PermGen space内存溢出异常的问题
  6. 字符编码过滤器中对特殊的路径进行特殊处理
  7. 编程之美:寻找发帖水王 扩展
  8. python建模全步骤
  9. Python设置显示屏分辨率
  10. 笔记本的无线网共享给台式机上网
  11. 团队的英文翻译缩写_常用的英文缩写翻译
  12. Visual SourceSafe 使用说明
  13. java基础--狂神
  14. tf.sigmoid
  15. 自下而上构建知识图谱全过程
  16. 【六】【vlc-android】vlc的decoder控制层传输数据与ffmpeg视频解码模块decoder层的数据交互流程源码分析
  17. 国外企业电子邮箱大全,国外用邮箱哪个好?怎么注册国外邮箱?
  18. Android-在app内安装apk
  19. 揭秘腾讯研究院:三分之二精力打造免费产品
  20. 计算机职业生涯规划书演讲稿,计算机专业职业生涯规划书.doc

热门文章

  1. sudo mysql压缩备份解压操作_高效管理文件之压缩及解压缩 .bz2 文件
  2. 帮帮忙—ssm框架中,简单自定义标签SimpleTagSupport如何注入spirng中的bean
  3. python语言运算符有三种_《Python语言程序设计》 —2.3 运算符
  4. php递归删除文件,PHP 递归删除文件夹
  5. android纹理存储,Android:OpenGL存储纹理多长时间?
  6. 爬空气质量MySQL_爬虫:利用selenium采集某某环境网站的空气质量数据
  7. hive 行转列和列转行的方法_面试常考!SQL行转列和列转行
  8. php的curl如何返回值,怎么在PHP中利用CURL获取返回值
  9. (递归7)生成可重集的排列
  10. linux复制目录命令夹,linux复制目录(文件夹)和打包命令