Berkeley DB Java Edition 介绍

来源:互联网 发布:java 策略模式运用场景 编辑:程序博客网 时间:2024/05/02 05:01
Berkeley DB Introduction
1. 首先它是一个非关系型数据库, Java Edition 是 Berkeley family 中的一员。 本章也就主要介绍 Berkeley DB java Edition.
2. Oracle Berkeley DB是一个高性能,高扩展性的DB
3. Oracle Berkeley DB是一个Opensource的以key-value存储的DB.
4. Oracle Berkeley DB为读写密集的负载提供了高性能,高并发的良好解决方案。


从技术角度讲, 作为一个嵌入式的DB系统,它不存在client/server的交互,并以应用native的格式存储。这样也就少了数据格式转换等细节。作为使用者,Berkeley 提供了一系列的API来使用, 我们所要做的就是把Berkeley DB的那一个jar放入class path.


下面讲讲Berkeley DB有哪些特性:


1. large database support, 它支持从1到数百万级的数据量,数据库的大小限制基本上大于你的硬件支持。
2. 多线程,多进程支持。DB的读写操作可以是多线程的,Berkeley DB用记录锁来为多线程应当来确保并发的可靠性,并且使用超时死锁发现机制来确保不会有两个线程无限期的被死锁控制。Berkeley DB 允许多个进程访问同一个DB。但在这种情况下, Berkeley 只允许一个线程进行写操作。读操作随意。
3. 就像前面所讲, Berkeley DB存的是key-value, key 和 value 都可以是随意的java type
4. 事务。原子性,可恢复,隔离性
5. 索引机制, Berkeley DB是一个key value 的存储结构,它的索引机制是怎么回事呢?
6. 内存Cache, 这个就是讲为减少IO操作,和提高性能,将数据暂存在内存里面。
7. 日志, Berkeley DB 在写DB之前,先将操作记录于log 文件,所以这个log文件应当可以起到数据恢复作用.
8. 后台线程, 后台线程有三个, checkpointer, compressor, cleaner. checkpointer 的作用是将cache中的data 刷到硬盘,compressor 的作用是将因为删除操作产生的空文件去掉, cleaner的作用就是干掉不再需要的log文件以节约存储空间。
9 Database Environment, 它是一个或多个数据库的封装和管理单儿,同时也是内部资源如后台线程,内存的管理单元,它还管理事务和并发。所有用到Berkeley DB的应用都需要使用Database Environment.
10 备份和恢复, Berkeley DB的备份就是将log文件copy到一个安全的存储介质, 它的灾后重建的做法便是把存档的日志文件拿出来,放到原位置, 重启DB
11 JCA JE provides support for the Java Connector Architecture

12 JMX


Berkeley DB Java Edition 的使用
1. Databases and Database Environments
要用Database, 你首先要开一个Database Environment,  Database Environments要求你指定一个硬盘中已经存的一个文件夹位置。一旦Environment 打开了,你就可以开一至多个Database.打开Database时,你要指定Database的名字。
2. Database Records
它就是一个键值对,键和值都要求变成 Byte Array进出于 DB, 封装它的对像是一个 DatabaseEntry 实体。
3. Put 和 Get
可以用Put 和 Get 方法来实现CRUD, 你还可以用游标(Cursor)


4. 重复数据
   Berkeley DB可以配置成一个Key对应多个Value, 用get 方法取值只能取到第一个数据,其它数据则要使用游标.


5. 更新和删除
如果不支持重复数据,更新一条数据则只要搞用 put方法就行,删除则只要调用delete 方法
支持重复数据的话,更新一条数据则要将游标定位到这条数据,然后调put方法,调用database.delete的话,将所有等值的key都删掉,调用cursor.delete则只删一条。


6. 次级 database
它为主数据库自动创建和管理key或者叫索引, 那样的话,你可以用次级DB的Key或者索引值来获得Value. 当打开一个次级DB时,需要将此与主DB关联,并必须指定索引generator. 次级DB靠SecondaryDatabase来管理


7 事务
8 内部资源
最重要的就是内存, 你得很小心的指定内存大小, 太小了,可能老是要刷硬盘,太大了,则可能浪费了本应发挥更好用途的内存资源。




原创粉丝点击