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

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像

一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注~前言概述本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上,以及如何使用镜像加速器来提升获取Docker官方镜像的速度。名…

java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法

首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是:JRootPane;第二层是:JlayerPane;最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。有了这些常识…

python3 web框架_循序渐进Python3(十二) --0--  web之框架

上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体…

图像识别开源代码_灰度图像着色开源代码

Victory组近期整理了灰度图像着色开源代码,文章刊登于《中国计算机学会计算机视觉专委会简报》2019年第2期上。灰度图像(gray image)是每个像素只有一个采样颜色的图像,即单通道图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度&#xf…

【adb】电脑通过ADB向手机传输文件

具体步骤如下: Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意:一定要是最新版本的ADB,否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示: Step2 添加环境变量 将 ADB的路径 D:\platformtools &…

java userdao,Java Web 开发基础------DAO

DAO (Data Access Objects)数据访问对象是第一个面向对象的接口,它显露了 Microsoft Jet数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统…

git 提交文件_GIT不小心提交了大文件导致提交失败怎么办?

出现问题的原因在commit的时候,我们之前提交的版本里面已经包含了些大文件了,虽然后来在新的提交里面删除了这些大文件,但是之前commit的记录还是存在,所以之后提交还是会失败1) 模拟一下环境:新建仓库并且添加一个 te…

matlab中变.,Matlab变系数微分方程

附件给出的是齿轮动力学振动模型和微分方程其中x为要求的位移响应,Zeta为齿轮副相对阻尼系数,Zeta 0.07,m为等效质量m3;Fn为法向载荷Fn100N。k(t)为齿轮副的时变啮合刚度对k(t)我做了关于时间t的傅里叶变换:k750527161…

ztree 标准得json数据格式_酷站推荐 - json-c.github.io/json-c - json-c API

json-c.github.io/json-c/http://json-c.github.io/json-c/JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。JSON(JavaScript Object …

matlab randn state 2,MATLAB?中的randn函数

matlab函数randn:产生正态分布的随机数或矩阵的函数randn产生均值为0,方差 σ^2 1,标准差σ 1的正态分布的随机数或矩阵的函数。用法:Y randn(n)返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。Y ra…

qt弹框输入密码_Android仿支付宝密码输入框

实现效果图:实现流程:1、定义6位密码输入View思路:要绘制边框矩形,绘制分割线,绘制圆点。绘制圆的数目要与字符串的长度有关,添加或者删除都要修改字符串,输入6位后就是要关闭弹框,拿…

php 前置匹配,浅析PHP正则表达式匹配的特定实现

PHP正则表达式匹配的特定实现是什么呢?其实我们知道,在实际的匹配操作的过程中我们操作的不仅仅是单个的字母或是数字,那么我们面对像单词的或是一组数字的时候该如何处理呢?PHP正则表达式匹配的特定实现会使用到PHP正则表达式内置…

esc指令检查打印状态_Z.115 胶片自助打印设备

一、概述病人在完成影像检查后,需要快速获取结果,传统的方式是向病人发放胶片和诊断报告,随着大型医院病人检查量的快速增加,这种方式有诸多弊病。自助打印机将胶片和诊断报告打印集成起来,消除时空障碍,实…

java执行class找不到main函数_你所不知道的HelloWorld背后的执行原理

专注于Java领域优质技术,欢迎关注作者:饭谈编程【今日最佳】对于程序员而言,所谓的二八定律指的是 花百分之八十的时间去学习日常研发中不常见的那百分之二十的原理。据说阿里某程序员对书法十分感兴趣,退休后决定在这方面有所建树…

matlab窗函数 响应,matlab窗函数设计方案.doc

matlab窗函数设计方案PAGE \* MERGEFORMATPAGE \* MERGEFORMAT 13目录TOC \o "1-3" \h \u HYPERLINK \l _Toc18947 目录 PAGEREF _Toc18947 1HYPERLINK \l _Toc5619 摘要 PAGEREF _Toc5619 2HYPERLINK \l _Toc16857 1 MATLAB的概况 PAGEREF _Toc16857 2HYPERLINK \l …

java接口文档生成工具_【分享】接口文档生成工具apipost

一、为什么要写接口文档?正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的。一个工整的文档显得是非重要。项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,项目维护中或者项目…

matlab boll源码,【每日一策】Matlab量化交易策略之 布林带突破+头寸管理

function Strategyn(freq)%targetList traderGetTargetList();%获取目标资产信息HandleList traderGetHandleList();%获取账户句柄global record;global state;for k1:length(targetList);%--------------------仓位、K线、当前bar的提取-----------------------------%%获取…

jacobi matlab程序,jacobi迭代法实验MATLAB程序数值分析

jacobi迭代法实验MATLAB程序数值分析 例1. 求线性方程组 得近似解。精确解为x*[3,2,1]’。 解:对方程进行移项就得 记为Axb,或写为xB0 xf,其中 取初始值,代入原方程组可得再将把它代入可得.反复利用这个计算过程,得到一向量序列和…

docker部署python web应用_安装docker并部署web项目

一.docker简介1、docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样。你可以把“hello world!”放到docker中,也可以把网站放到docker中,你可以把任何你…

java 水印乱码,linux java程序加水印及中文乱码方案

在linux,centos环境下的,生成的带文字的水印图片在显示为方框乱码。img.setFont(new Font("宋体", Font.BOLD, 20));写中文进入图片之前必须设置字体,而且这个字体必须支持中文,否则就会出现乱码或者方框、问号等等。Bu…