Berkeley DB是一个嵌入式的数据库,它适合于管理海量的、简单的数据。关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础。每个key/value构成了一条记录,而整个数据库实际上就是由许多这样的结构单元构成的,使用其提供的API访问数据库时,只需要提供关键字就能访问到相应的数据。当然也可以在提供Key和部分Data来查询符合条件的相近数据。

  Berkeley DB底层实现采用B树,可以看成能够存储大量数据的HashMap。Berkeley DB是通过环境对象EnvironmentConfig来对数据库进行管理的,每个EnvironmentConfig对象可以管理多个数据库,建立一个新的EnvironmentConfig的代码如下:

 EnvironmentConfig envConfig = new EnviromentConfig();
envConfig.setTransactional(false);
envConfig.setAllowCreate(true);
exampleEnv = new Environment(envDir, envConfig);

  其中,envDir是用户指定的一个目录,只要是同一个EnvironmentConfig指定的数据库文件和日志文件,都会放在这个目录下。EnvironmentConfig也是一种资源,当使用完毕后,应该释放掉。

 exampleEnv.sync();
exampleEnv.close();
exampleEny = null;

  创建好环境之后,就可以用它创建数据库了。用Berkeley DB创建数据库时,需要指定数据库的属性,就好比在Orcal中创建数据库里要指定java_pool、buffer_size等属性一样。Berkeley DB使用DatabaseConfig来管理一个具体的Database。

 String databaseName = "ToDoTastList.db";
DatabaseConfig dbConfig = new DataBaseConfig();
dbConfig.setAllowCreate(true);
dbConfig.setTransactional(false); dbConfig.setSortedDuplicates(false);
Database myClassDb = exampleEnv.openDatabase(null, "classDb", dbconfig);
catalog = new StoreClassCatalog(myClassDb);
TupleBinding keyBinding = TupleBinding.getPrimitiveBinding(String.class);
serialBinding valueBinding = new SerialBinding(catalog, NewsSource.class);
store = exampleEnv.openDatabase(null, databaseName, dbConfig);

  当数据库建立起来之后,就要确定往数据库里存储的数据类型,Berkeley DB数据类型是采用EntryBinding来确定的。

 EntryBinding keyBinding = new SerialBinding(javaCatalog, String.class);

  其中,SerialBinding表示这个对象能够序列化到磁盘上,因此,构造函数的第二个参数一定要是实现了序列化接口的对象。

  最后,创建一个以Berkeley DB为底层数据结构的Map:

 this.map = new StoredSortedMap(store, keyBinding, valueBinding, true);

「JAVA」:Berkeley DB的JAVA连接的更多相关文章

  1. Java学习日记-1 设置Java环境变量等

    一.环境变量的设置 安装完jdk以后,需要配置环境变量,找到[我的电脑]-[属性]-[高级]-[环境变量] 这里需要配置3个环境变量 1.新建系统变量JAVA_HOME,变量值为jdk的安装路径,比如 ...

  2. Berkeley DB Java Edition 简介

    一.             简介        Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l         能够高效率的 ...

  3. 正则表达式从入门到放弃「Java」

    正则表达式能做什么? 正则表达式可以用来搜索.编辑或处理文本. 「都懂它可以处理文本,可到底是怎么回事?」 正则表达式的定义 百度百科:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特 ...

  4. 「2014-3-13」Javascript Engine, Java VM, Python interpreter, PyPy – a glance

    提要: url anchor (ajax) => javascript engine (1~4 articles) => java VM vs. python interpreter =& ...

  5. Oracle Berkeley DB Java 版

    Oracle Berkeley DB Java 版是一个开源的.可嵌入的事务存储引擎,是完全用 Java 编写的.它充分利用 Java 环境来简化开发和部署.Oracle Berkeley DB Ja ...

  6. jvm系列(十):如何优化Java GC「译」

    本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三 ...

  7. Java的参数传递是「按值传递」还是「按引用传递」?

    JAVA传递的只有值,.传递的都是栈里的的值,只是有些栈里面的是值.有的是内存地址.(原文传递的都是栈里的的值有误,局部变量在栈中,成员变量在堆中,类变量(静态变量和常量)在方法区中,可以看做本文的变 ...

  8. jvm系列(七):如何优化Java GC「译」

    本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. Sangmin Lee发表在Cubrid上的”Become a Java GC Expert”系列文章 ...

  9. 「福利」Java Swing 编写的可视化算法工程,包含树、图和排序

    之前在整理<学习排序算法,结合这个方法太容易理解了>这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下: 可 ...

随机推荐

  1. [HDU 4741]Save Labman No.004[计算几何][精度]

    题意: 求两条空间直线的距离,以及对应那条距离线段的两端点坐标. 思路: 有一个参数方程算最短距离的公式, 代入求即可. 但是这题卡精度... 用另外的公式(先算出a直线上到b最近的点p的坐标, 再算 ...

  2. Cocos2d-iPhone V3 (2) 场景转换

    Cocos2d-iPhone V3 (2) 场景转换 博客:http://blog.csdn.net/prevention 作者:大锐哥 - 1. 准备工作 创建一个场景会吧? #import &qu ...

  3. 通过浏览器直接打开Android应用程序

    需求 通过手机浏览器直接打开Android应用程序.假设本地已经安装了指定Android应用,就直接打开它:假设没有安装,则直接下载该应用的安装文件(也能够跳转到下载页面). 实现效果 假设手机上已经 ...

  4. Javascript之Dom学习

    1.简介:DOM是一套对文档的内容进行抽象和概念化的方法.在现实世界里,人们对"世界对象模型"一定不会陌生,当人们用"房子","汽车"等这一 ...

  5. hdu 5104 Primes Problem(prime 将三重循环化两重)

    //宁用大量的二维不用量小的三维 #include <iostream> #include<cstdio> #include<cstring> using name ...

  6. java 汉字转拼音

    先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...

  7. button 变成圆

      btn.layer.cornerRdius = width/2.0;btn.layer.maskToBounds = width/2.0:   

  8. ajax 上传图片 并预览

     <img {if !$article[pic]}style="display: none"{/if} width="82" height="6 ...

  9. POJ 2406 Power Strings(字符串的最小循环节)

    题目链接:http://poj.org/problem?id=2406 题意:确定字符串最多是多少个相同的字串重复连接而成的 思路:关键是找到字符串的最小循环节 code: #include < ...

  10. ASP.NET MVC 中的 T4

    每次使用“添加视图”或“添加控制器”功能时,您都在 ASP.NET MVC 项目中使用 T4 模板.这些模板位于 Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\ ...