「JAVA」:Berkeley DB的JAVA连接
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连接的更多相关文章
- Java学习日记-1 设置Java环境变量等
一.环境变量的设置 安装完jdk以后,需要配置环境变量,找到[我的电脑]-[属性]-[高级]-[环境变量] 这里需要配置3个环境变量 1.新建系统变量JAVA_HOME,变量值为jdk的安装路径,比如 ...
- Berkeley DB Java Edition 简介
一. 简介 Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l 能够高效率的 ...
- 正则表达式从入门到放弃「Java」
正则表达式能做什么? 正则表达式可以用来搜索.编辑或处理文本. 「都懂它可以处理文本,可到底是怎么回事?」 正则表达式的定义 百度百科:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特 ...
- 「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 =& ...
- Oracle Berkeley DB Java 版
Oracle Berkeley DB Java 版是一个开源的.可嵌入的事务存储引擎,是完全用 Java 编写的.它充分利用 Java 环境来简化开发和部署.Oracle Berkeley DB Ja ...
- jvm系列(十):如何优化Java GC「译」
本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三 ...
- Java的参数传递是「按值传递」还是「按引用传递」?
JAVA传递的只有值,.传递的都是栈里的的值,只是有些栈里面的是值.有的是内存地址.(原文传递的都是栈里的的值有误,局部变量在栈中,成员变量在堆中,类变量(静态变量和常量)在方法区中,可以看做本文的变 ...
- jvm系列(七):如何优化Java GC「译」
本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. Sangmin Lee发表在Cubrid上的”Become a Java GC Expert”系列文章 ...
- 「福利」Java Swing 编写的可视化算法工程,包含树、图和排序
之前在整理<学习排序算法,结合这个方法太容易理解了>这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下: 可 ...
随机推荐
- Android应用开发基础篇(1)-----Button
Android应用开发基础篇(1)-----Button 一.概述 Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用 新建一个工程, ...
- js字面量
以前一直对js字面量模棱两可. '字面量是一种表示值的记法.' js字面量(literal) 分为以下几个 number literal 8 就是数字字面量 string liter ...
- ASP.NET性能监视参数详解
性能监视器- Performance Monitor 性能监视器是Windows自带的系统资源和性能监视工具. 性能监视器能够量化地提供CPU使用率, 内存分配状况, 异常派发情况, 线程调度频率等信 ...
- VS2015+MySql EF的配置问题
自己做笔记,防止以后各种找! 去MySql下载最新版的安装包,MySql For Windows全部就可以了,根据开发需求安装功能,然后安装MySql的步骤上网去找一大堆. 注意事项: 第一:必须把V ...
- java线程的使用(Runnable)
在实际项目开发过程中,线程是经常要用到的,特别是为了不影响项目的运行效果. 以下就以实际项目中的简单例子来介绍: public class SystemRedisInfoController exte ...
- BZOJ 2314: 士兵的放置( 树形dp )
树形dp... dp(x, 0)表示结点x不放士兵, 由父亲控制: dp(x, 1)表示结点x不放士兵, 由儿子控制: dp(x, 2)表示结点x放士兵. ---------------------- ...
- 托管服务帐号(Managed Service Account)
托管服务帐号是绑定到单独的机器上,并且仅用于服务所用,所以不能用来登录. 创建托管帐号,不需要指定密码,密码会由活动目录自动管理.并且根据密码策略(默认30天)自动刷新,期间不影响服务. 在创建完之后 ...
- jquery选择器:nth-child()与空格:eq() 的区别;
在一个7x7的表格当中 nth-child(1); td.parents("table").find("tr :nth-child(1)").css(" ...
- MySql 日期字符串类型互转
1.data_format 日期转字符串 select date_format(Now(), '%Y-%m-%d %H:%i'); 2.str_to_date 字符串转日期 select str_to ...
- Select specified items from Tuple List
#Select specified items from Tuple List ##Select one item to form list `tupleList.Select(element =&g ...