Berkeley DB Java Edition使用说明详细.docx

上传人:b****6 文档编号:3005064 上传时间:2022-11-17 格式:DOCX 页数:74 大小:162.13KB
下载 相关 举报
Berkeley DB Java Edition使用说明详细.docx_第1页
第1页 / 共74页
Berkeley DB Java Edition使用说明详细.docx_第2页
第2页 / 共74页
Berkeley DB Java Edition使用说明详细.docx_第3页
第3页 / 共74页
Berkeley DB Java Edition使用说明详细.docx_第4页
第4页 / 共74页
Berkeley DB Java Edition使用说明详细.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

Berkeley DB Java Edition使用说明详细.docx

《Berkeley DB Java Edition使用说明详细.docx》由会员分享,可在线阅读,更多相关《Berkeley DB Java Edition使用说明详细.docx(74页珍藏版)》请在冰豆网上搜索。

Berkeley DB Java Edition使用说明详细.docx

BerkeleyDBJavaEdition使用说明详细

一、             简介

      BerkeleyDBJavaEdition(JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据。

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

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

l         Database都采用简单的key/value对应的形式。

l         事务支持。

l         允许创建二级库。

这样我们就可以方便的使用一级key,二级key来访问我们的数据。

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

l         支持日志。

l         数据备份和恢复。

l         游标支持。

二、             获取JE

JE下载地址:

解开包后把JE_HOME/lib/je-.jar 中的jar文件添加到你的环境变量中就可以使用je了。

相关帮助文档可以参考 JE_HOME/docs/index.html

源代码见JE_HOME/src/*.*

三、             JE常见的异常

DatabaseNotFoundException 当没有找到指定的数据库的时候会返回这个异常

DeadlockException 线程间死锁异常

RunRecoveryException 回收异常,当发生此异常的时候,你必须得重新打开环境变量。

四、             关于日志文件必须了解的六项

JE的日志文件跟其他的数据库的日志文件不太一样,跟C版的DBD也是有区别的

l         JE的日志文件只能APPEND,第一个日志文件名是 00000000.jdb,当他增长到一定大小的时候(默认是10M),开始写第二个日志文件00000001.jdb,已此类推。

l         跟C版本有所不同,JE的数据日志和事务日志是放在一起的,而不是分开放的。

l         JEcleaner负责清扫没用到的磁盘空间,删除后,或者更新后新的记录会追加进来,而原有的记录空间就不在使用了,cleaner负责清理不用的空间。

l         清理并不是立即进行的,当你关闭你的数据库环境后,通过调用一个cleaner方法来清理。

l         清理也不是只动执行的,需要你自己手动调用cleaner方法来定时清理的。

l         日志文件的删除仅发生在检查点之后。

cleaner准备出哪些log文件需要被删除,当检查点过后,删掉一些不在被使用的文件。

每写20M的日志文件就执行一次检查点,默认下。

五、             创建数据库环境

JE要求在任何DATABASE操作前,要先打开数据库环境,就像我们要使用数据库的话必须得先建立连接一样。

你可以通过数据库环境来创建和打开database,或者更改database名称和删除database.

可以通过Environments对象来打开环境,打开环境的时候设置的目录必须是已经存在的目录,否则会出错误。

默认情况下,如果指定的database不存在则不会自动创建一个新的detabase,但可以通过设置setAllowCreate来改变这一情况。

1.         打开database环境

示例:

packageje.gettingStarted;

importcom.sleepycat.je.DatabaseException;

importcom.sleepycat.je.Environment;

importcom.sleepycat.je.EnvironmentConfig;

importjava.io.File;

 

...

 

EnvironmentmyDbEnvironment=null;

 

try{

   EnvironmentConfigenvConfig=newEnvironmentConfig();

   envConfig.setAllowCreate(true);//如果不存在则创建一个

   myDbEnvironment=newEnvironment(newFile("/export/dbEnv"),envConfig);

}catch(DatabaseExceptiondbe){

   // 错误处理

}

2.         关闭database环境

可以通过Environment.close()这个方法来关闭database环境,当你完成数据库操作后一定要关闭数据库环境。

示例:

importcom.sleepycat.je.DatabaseException;

importcom.sleepycat.je.Environment;

 

...

 

try{

   if(myDbEnvironment!

=null){

       myDbEnvironment.close();

   }

}catch(DatabaseExceptiondbe){

   //Exceptionhandlinggoeshere

}

3.         清理日志

通常在关闭数据库连接的时候,有必要清理下日志,用以释放更多的磁盘空间。

我们可以在Environment.close前执行下Environment.cleanLog()来达到此目的。

示例:

importcom.sleepycat.je.DatabaseException;

importcom.sleepycat.je.Environment;

 

...

 

try{

   if(myDbEnvironment!

=null){

       myDbEnvironment.cleanLog();// 在关闭环境前清理下日志

       myDbEnvironment.close();

   }

}catch(DatabaseExceptiondbe){

   //Exceptionhandlinggoeshere

}

4.         Database环境的配置

可以通过EnvironmentConfig这个对象来配置database环境。

如果想得到当前环境的配置信息则可以通过Environment.getConfig()方法得到当前环境的配置信息。

也可以使用EnvironmentMutableConfig来配置环境,其实EnvironmentConfig是EnvironmentMutableConfig的子类,所以EnvironmentMutableConfig能够使用的设置,EnvironmentConfig也同样能够使用。

如果你要获取当前环境的使用情况,那么你可以通过使用EnvironmentStats.getNCacheMiss().来监视RAMcache命中率。

EnvironmentStats可以由Environment.getStats()方法获取。

EnvironmentConfig常见方法介绍

l         EnvironmentConfig.setAllowCreate();

如果设置了true则表示当数据库环境不存在时候重新创建一个数据库环境,默认为false.

l         EnvironmentConfig.setReadOnly()

以只读方式打开,默认为false.

l         EnvironmentConfig.setTransactional()

事务支持,如果为true,则表示当前环境支持事务处理,默认为false,不支持事务处理。

                            EnvironmentMutableConfig的介绍

l         setCachePercent()

设置当前环境能够使用的RAM占整个JVM内存的百分比。

l         setCacheSize()

设置当前环境能够使用的最大RAM。

单位BYTE

l         setTxnNoSync()

当提交事务的时候是否把缓存中的内容同步到磁盘中去。

true表示不同步,也就是说不写磁盘

l         setTxnWriteNoSync()

当提交事务的时候,是否把缓冲的log写到磁盘上

true表示不同步,也就是说不写磁盘

                            示例一:

packageje.gettingStarted;

importcom.sleepycat.je.DatabaseException;

importcom.sleepycat.je.Environment;

importcom.sleepycat.je.EnvironmentConfig;

importjava.io.File;

 

...

 

EnvironmentmyDatabaseEnvironment=null;

try{

   EnvironmentConfigenvConfig=newEnvironmentConfig();

   //当环境不存在的时候自动创建环境

      envConfig.setAllowCreate(true);

      //设置支持事务

      envConfig.setTransactional(true);

   myDatabaseEnvironment=

       newEnvironment(newFile("/export/dbEnv"),envConfig);

}catch(DatabaseExceptiondbe){

  System.err.println(dbe.toString());

  System.exit

(1);

}

                 示例二:

packageje.gettingStarted;

importcom.sleepycat.je.DatabaseException;

importcom.sleepycat.je.Environment;

importcom.sleepycat.je.EnvironmentMutableConfig;

importjava.io.File;

...

try{

   EnvironmentmyEnv=newEnvironment(newFile("/export/dbEnv"),null);

   EnvironmentMutableConfigenvMutableConfig=

       newEnvironmentMutableConfig();

   envMutableConfig.setTxnNoSync(true);

   myEnv.setMutableConfig(envMutableConfig);

}catch(DatabaseExceptiondbe){

   //Exceptionhandlinggoeshere

}

              

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1