java版bdb数据库的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java版bdb数据库的使⽤
bdb数据库(Berkeley Database)的使⽤
(注:Berkeley DB是⼀个开源的⽂件数据库、嵌⼊式数据库,介于关系数据库与内存数据库之间,使⽤⽅式与内存数据库类似,它提供的是⼀系列直接访问数据库的函数,⽽不是像关系数据库那样需要⽹络通讯、SQL解析等步骤。
)
1,bdb数据库环境的使⽤
a,使⽤bdb时,要先打开数据库环境:
EnvironmentConfig envConfig = new EnvironmentConfig();//创建环境配置对象
envConfig.setAllowCreate(true);//表⽰如果该数据库环境不存在则⾃动创建⼀个
Environment environment =
new Environment(new File("D:\dbEnv"),envConfig);//创建数据库对象
b,当完成数据库操作后需要关闭环境,在关闭环境前需要清理⽇志,释放磁盘空间:
environment.cleanLog(); environment.close();
c,EnvironmentConfig对象可以配置database环境,如果想得到当前环境的配置信息可以使⽤这个⽅法:
EnvironmentConfig envConfig = Environment.getConfig();
注:EnvironmentConfig是EnvironmentMutableConfig的⼦类;
d,EnvironmentConfig的常⽤⽅法:
1)EnvironmentConfig.setAllowCreate(true);表⽰如果当前数据库环境不存在时⾃动创建⼀个;默认为false;
2)EnvironmentConfig.setReadOnly(true);以只读的⽅式打开;默认为false(读写⽅式)
3)EnvironmentConfig.setTransactional(true);⽀持事务处理;默认为false不⽀持事务处理
e,EnvironmentMutableConfig的常⽤⽅法:
1)setCachePercent(0.1);设置当前环境能够使⽤的RAM(内存)占整个JVM内存的百分⽐
2)setCacheSize();设置当前环境能够使⽤的最⼤内存,单位BYTE
3)setTxnnoSync(false);当提交事务时把缓存中的内容同步到磁盘中去;true表⽰不同步,即不写磁盘
4)setTxnWriteNoSync(false);当提交事务时把缓存中的log写到磁盘上;true表⽰不停步,即不写磁盘
2,bdb数据库的使⽤:
a,BDB中,数据是以key/value⽅式成对出现的,打开数据库(需要配置数据库设置DatabaseConfig):
DatabaseConfig dbConfig = new DatabaseConfig();//创建数据库配置对象
dbConfig.setAllowCreate(true);//当数据库不存在时,允许⾃动创建数据库
Database database = environment.openDatabase(null,"myDatabase",dbConfig);打开⼀个名为“myDatabase的数据库” b,通过调⽤Database.close()⽅法来关闭数据库,但要注意,在关闭数据库前必须得先把游标关闭。
此外,在关闭数据库环境前需要先把数据库关闭;
c,设置数据库的属性(和设置环境属性的差不多):
1)DatabaseConfig.setAllowCreate(true);当不存在此数据库时⾃动创建⼀个,默认是false
2)DatabaseConfig.setBtreeComparator();设置Btree⽐较的⽐较器,通常是⽤来排序
3)DatabaseCofig.setDuplicateComparator();设置⽤来⽐较⼀个key有两个不同的值的时候的⼤⼩⽐较器
4)DatabaseConfig.setSortedDuplicates(true);允许⼀个key有多个值,默认为false
5)DatabaseConfig.setExclusiveCreate();以独占的⽅式打来数据库,也就是同⼀时间只能有⼀个实例打开该数据库
6)DatabaseConfig.setReadOnly(true);以只读的⽅式打开;默认false,读写⽅式打开
7)DatabaseConfig.setTransactional(true);⽀持事务处理;默认是false
d,管理数据库的⼀些⽅法:
1)Database.getDatabaseName();得到数据库名字
2)Database.getEnvironment();得到数据库环境对象
3)Database.preload(10485761);预先加载制定的bytes数据到RAM(内存)中
4)Environment.getDatabaseNames();返回当前环境下的数据库列表
5)Environment.removeDatabase(null,"myDatabase");删除当前环境下指定名为myDatabase的数据库
6)Environment.renameDatabase(null,oldName,newName);重命名数据库
7)Environment.truncateDatabase(null,"myDatabase",true);清空database内的所有数据,返回清空了对少条记录
3,事务处理机制:
a,事务是⼀个最⼩的⼯作单元,不论成功与否都作为⼀个整体进⾏⼯作。
b,不会有部分完成的事务。
由于事务是由⼏个任务组成的,因此如果⼀个事务作为⼀个整体是成功的,则事务中的每个任务都必须成功。
如果事务中有⼀部分失败,则整个事务失败。
c,当事务失败时,系统返回到事务开始前的状态。
这个取消所有变化的过程称为“回滚”(rollback )。
d,事务的ACID属性(不需要开发⼈员亲⾃管理的特性):
A:原⼦性,最⼩⼯作单元,要么全做,要么全不做;
C:⼀致性,确保系统处于有效状态,要么回到原始状态,要么更新成功后的状态
I:隔离性,利⽤锁机制确保同⼀时间只有⼀个请求处理同⼀数据;
D:持久性,⼀旦事务成功,产⽣的变化是永久的(数据写⼊磁盘上了)。