一、 简介
Berkeley DB(BDB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,Tcl以及其他很多语言都有应用程序编程界面。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。
Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据。
Berkeley DB特征:
1. 数据存储能力很强(Large database support)
2. 支持多线程(Multiple thread and process support)
3. 数据库的记录很简单,只是简单的键值对(Database records)
4. 提供事务支持(Transactions)
5. 提供索引支持(Indexes)
6. 提供内存缓存的支持(In-memory cache)
7. 按照连续的记录文件存储数据(Log files)
8. 后台线程的支持(Background threads)
9. 数据库环境封装了一个或多个数据库(Database environments)
10. 支持数据库的备份和恢复(Backup and restore)
二、 获取JE
JE下载地址:http://www.oracle.com/technology/software/products/berkeley-db/je/index.html
解开包后 把JE_HOME/lib/je-<version>.jar 中的jar文件添加到你的环境变量中就可以使用je了。相关帮助文档可以参考 JE_HOME/docs/index.html源代码见JE_HOME/src/*.*。(就是把你得到的jre文件导入到你的项目中)
三、 JE常见异常
DatabaseNotFoundException 当没有找到指定的数据库的时候会返回这个异常
DeadlockException 线程间死锁异常
RunRecoveryException 回收异常,当发生此异常的时候,你必须得重新打开环境变量。
四、 关于日志文件必须了解的六项
JE的日志文件跟其他的数据库的日志文件不太一样,跟C版的DBD也是有区别的
1.JE的日志文件只能APPEND,第一个日志文件名是 00000000.jdb,当他增长到一定大小的时候(默认是10M),开始写第二个日志文件00000001.jdb,已此类推。
2.跟C版本有所不同,JE的数据日志和事务日志是放在一起的,而不是分开放的。
3. JE cleaner负责清扫没用到的磁盘空间,删除后,或者更新后新的记录会追加进来,而原有的记录空间就不在使用了,cleaner负责清理不用的空间。
4. 清理并不是立即进行的,当你关闭你的数据库环境后,通过调用一个cleaner方法来清理。
5. 清理也不是自动执行的,需要你自己手动调用cleaner 方法来定时清理的。
6. 日志文件的删除仅发生在检查点之后。cleaner准备出哪些log 文件需要被删除,当检查点过后,删掉一些不在被使用的文件。每写20M的日志文件就执行一次检查点,默认下。