BerkeleyDB-JE 简介

Berkeley DB Java Edition(JE)是一个使用纯java编写的通用的,支持事务的,嵌入式的数据库。它让java开发人员可以安全而有效的在进程中存储和管理任意的数据。
JE提供了两种API供开发人员选择开和数据库交互。
[list]
[*]直接持久层(DPL),有点类似于Hibernate或JPA一样的ORM技术,通过DPL你可以很方便持久化任何类型的数据。
[*]基本API(Base API),属于那种原始的,但是功能十分完善的又很灵活的API。
[/list]
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文件,有几点要知道下:
[list]
[*]JE中没有单独的“数据文件”,跟BerkeleyDB C Edition不同的是,JE中所有的事务日志和记录数据都保存在一个文件中,这就是.log文件。
[*].log文件是只能添加的(append only),记录数据的增删改都是加添在.log的末尾处。
[*]有一个JE清理器(JE cleaner)会负责回收没用的磁盘空间。比如发生了很多的删除和修改之后,一个比较早的.log文件里面的数据大部分都没有用了,这时有一个独立的线程,会把这个文件中有用的部分复制到最后一个.log文件末尾处,然后删除掉那个没用的.log文件。
[*]对没用的.log文件文件的删除只会发生在检查点(checkpoint)之后。检查点的执行在默认情况下是发生在写入了20M的内容到日志文件之中的时候。
[/list]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值