黑马程序员_BerkeleyDB JE 学习介绍

------- android培训java培训、期待与您交流! ----------


BerkeleyDB JE

一、简介

Berkeley DB Java Edition (JE)是完全用Java编写的嵌入式内存数据库

特点:

1 能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不是JE

2、多线程支持,JE使用超时的方式来处理线程间的死琐问题

3、Database都采用简单的key/value对应的形式

4、事务支持

5、允许创建二级库,可以方便的使用一级key,二级key来访问我们的数据

6、支持RAM缓冲,这样就能减少频繁的IO操作

7、支持日志

8、数据备份和恢复

9、游标支持

二、Programming with the Base API

数据库Environment对象封装一个或多个Database对象,通过Environment对象打开、删除、重命名数据库,总之数据库环境维护数据库信息

1、打开数据库环境(Environment

需要指明数据库home目录和数据库环境配置

2、打开数据库

openDatabase(Transaction txn, String databaseName,DatabaseConfig dbConfig)

3、操作数据库

每一条database记录由两个DatabaseEntry组成,代表key/value

构造DatabaseEntry的方法1:

如果原始记录为:String aKey = “key”;String aData = “data”;

通过DatabaseEntry的构造方法将key/value封装成DatabaseEntry:

可以看出,字符串类型的key/value需要转化成二进制数组,再被封装。同样的,任何类型的key/value都需要处理成二进制数组,再被封装。

那么如何获取封装在DatabaseEntry里面的key/value:

根据面向对象的方法,DatabaseEntry肯定提供这样的方法,就是DatabaseEntry.getData

构造DatabaseEntry的方法2(Bind API):

通过Bind API能够封装基本数据类型和序列化的对象

使用BindAPI存储基本数据类型的方法:

1)创建EntryBinding对,调用TupleBinding.getPrimitiveBinding来获取绑定

2)使用EntryBinding对象,将基本数据类型封装到DatabaseEntry里面

一旦封装成DatabaseEntry对象,就能进行数据库的记录操作

获取封装在DatabaseEntry里面的基本数据类型:

根据面向对象的思想,一定是调用EntryBinding的方法,EntryBinding.entryToObject

使用BindAPI存储序列化对象的方法:

1)要存储对象必须实现Serializable接口

2)创建两个数据库,一个用来存储数据,另一个用来存储class信息

3)实例化一个class目录,使用com.sleepycat.bind.serial.StoredClassCatalog

4)创建EntryBinding,这里用其子类SerialBinding

5)通过EntryBinding的方法,将序列化对象存入DatabaseEntry

获取封装在DatabaseEntry里面的序列化对象:

根据面向对象的思想,流程同上,且是调用EntryBinding的方法,entryToObject

将记录写入数据库:

根据面向对象的方法,一定是调用Database对象的方法,因此还是需要查阅API文档

Database.put():

Database.putNoOverwrite():

Database.putNoDupData():

从数据库根据key读取记录:

根据面向对象的方法,一定是调用Database对象的方法,注意读取的数据一定是存放在空DatabaseEntry里面,详细查阅API文档

Database.get():

Database.getSearchBoth():

从数据库根据key删除记录:

根据面向对象的方法,一定是调用Database对象的方法

Database.delete():

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值