`
mengyang
  • 浏览: 263611 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

BerkeleyDB-JE 简介

    博客分类:
  • BDB
阅读更多
Berkeley DB Java Edition(JE)是一个使用纯java编写的通用的,支持事务的,嵌入式的数据库。它让java开发人员可以安全而有效的在进程中存储和管理任意的数据。
JE提供了两种API供开发人员选择开和数据库交互。
  • 直接持久层(DPL),有点类似于Hibernate或JPA一样的ORM技术,通过DPL你可以很方便持久化任何类型的数据。
  • 基本API(Base API),属于那种原始的,但是功能十分完善的又很灵活的API。

JE是通过“键值对”来保存和检索数据的。JE中的每条记录(record)就是一个“键值对”,“值”代表了你要保存并且未来想检索的数据。“键”是你用于查找数据的索引。这有点像Java中的Map。但是JE是允许一个键有多个值的,这就是重复数据(Duplicate Data),如果你使用的是DPL,可以通过次键(secondary keys)来实现;如果你使用的是BaseAPI,你可以在打开数据库的时候设置允许重复属性来实现。
JE还支持事务。使用事务可以保证JE中数据的ACID。
JE中有个非常重要的资源是内存缓存(in-memory cache),对它的设置不当可能会造成内存的浪费或是非常频繁的I/O读写。
关于JE中保存的数据类型(schema)的变化比一般的数据库复杂。我们知道JE中的每个记录都是一个键值对,那个值实际上就是某个java类的实例。当这个java类发生了改变的时候,如果改变只是添加了几个字段之类的简单改变那还好办,如果是改变了字段名,那么就要使用一些特定的类和方法来转换了。
最后是关于JE的备份和恢复,这也比我们通常用的数据库简单很多。因为JE的所有数据都是记录在.log文件之中,所以大体上我们只要把所有的.log文件拷贝起来就可以了。关于JE中的.log文件,有几点要知道下:
  • JE中没有单独的“数据文件”,跟BerkeleyDB C Edition不同的是,JE中所有的事务日志和记录数据都保存在一个文件中,这就是.log文件。
  • .log文件是只能添加的(append only),记录数据的增删改都是加添在.log的末尾处。
  • 有一个JE清理器(JE cleaner)会负责回收没用的磁盘空间。比如发生了很多的删除和修改之后,一个比较早的.log文件里面的数据大部分都没有用了,这时有一个独立的线程,会把这个文件中有用的部分复制到最后一个.log文件末尾处,然后删除掉那个没用的.log文件。
  • 对没用的.log文件文件的删除只会发生在检查点(checkpoint)之后。检查点的执行在默认情况下是发生在写入了20M的内容到日志文件之中的时候。




0
0
分享到:
评论
1 楼 LinApex 2013-05-11  
不看。。。

相关推荐

Global site tag (gtag.js) - Google Analytics