绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Java那些事之Berkeley DB
2022-04-21 11:01:56

近一直在使用java,随着使用时间的加长,对java也有了更深入的了解。从今天开始,我会写一些关于java的专题内容,希望大家喜欢,也希望各位多多讨论指正。

 

这一次先介绍一下Berkeley DB的java版本,Berkeley DB Java Edition (JE)。

JE 适合于管理海量的,简单的数据。其中的记录都以简单的键值对保存,即key/value对。由于它操作简单,效率较高,因此受到了广泛的好评。下面我就带领大家看看JE 是如果使用的吧~

JE 下载地址:http://www.oracle.com/technology/software/products/berkeley-db/je/index.html

下载完成解亚后,把JE_HOME/lib/je-.jar 中的jar文件添加到你的环境变量中就可以使用je了。

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

源代码见JE_HOME/src/*.*

 

 

下面是具体的使用代码,大家可以参考一下,注释还是比较详细的,有什么不懂的可以给我留言~

 

View Code
复制代码
 1     /*
 2      * 打开当前数据库
 3      */
 4     public  void openDatabase() {
 5         // TODO Auto-generated method stub
 6         try{
 7             CheckMethods.PrintDebugMessage("打开数据库: "+dbName);
 8             EnvironmentConfig envConfig = new EnvironmentConfig();
 9             envConfig.setAllowCreate(true);
10             envConfig.setTransactional(true);
11             envConfig.setReadOnly(false);
12             envConfig.setTxnTimeout(10000, TimeUnit.MILLISECONDS);
13             envConfig.setLockTimeout(10000, TimeUnit.MILLISECONDS);
14             /*
15              *   其他配置 可以进行更改
16                 EnvironmentMutableConfig envMutableConfig = new EnvironmentMutableConfig();
17                 envMutableConfig.setCachePercent(50);//设置je的cache占用jvm 内存的百分比。
18                 envMutableConfig.setCacheSize(123456);//设定缓存的大小为123456Bytes
19                 envMutableConfig.setTxnNoSync(true);//设定事务提交时是否写更改的数据到磁盘,true不写磁盘。
20                 //envMutableConfig.setTxnWriteNoSync(false);//设定事务在提交时,是否写缓冲的log到磁盘。如果写磁盘会影响性能,不写会影响事务的安全。随机应变。
21              *
22              */
23             File file = new File(fileName);
24             if(!file.exists())
25                 file.mkdirs();
26             myDbEnvironment = new Environment(file,envConfig);
27             
28             dbConfig = new DatabaseConfig();
29             dbConfig.setAllowCreate(true);
30             dbConfig.setTransactional(true);
31             dbConfig.setReadOnly(false);
32             //dbConfig.setSortedDuplicates(false);
33             /*
34                 setBtreeComparator 设置用于B tree比较的比较器,通常是用来排序
35                 setDuplicateComparator 设置用来比较一个key有两个不同值的时候的大小比较器。
36                 setSortedDuplicates 设置一个key是否允许存储多个值,true代表允许,默认false.
37                 setExclusiveCreate 以独占的方式打开,也就是说同一个时间只能有一实例打开这个database。
38                 setReadOnly 以只读方式打开database,默认是false.
39                 setTransactional 如果设置为true,则支持事务处理,默认是false,不支持事务。
40             */
41             if(myDatabase == null)
42                 myDatabase = myDbEnvironment.openDatabase(null, dbName, dbConfig);
43             
44             CheckMethods.PrintDebugMessage(dbName+"数据库中的数据个数: "+myDatabase.count());
45             /*
46              *  Database.getDatabaseName()
47                 取得数据库的名称
48                 如:String dbName = myDatabase.getDatabaseName();
49                 
50                 Database.getEnvironment()
51                 取得包含这个database的环境信息
52                 如:Environment theEnv = myDatabase.getEnvironment();
53                 
54                 Database.preload()
55                 预先加载指定bytes的数据到RAM中。
56                 如:myDatabase.preload(1048576l); // 1024*1024
57                 
58                 Environment.getDatabaseNames()
59                 返回当前环境下的数据库列表
60                 Environment.removeDatabase()
61                 删除当前环境中指定的数据库。
62                 如:
63                 String dbName = myDatabase.getDatabaseName();
64                 myDatabase.close();
65                 myDbEnv.removeDatabase(null, dbName);
66                 
67                 Environment.renameDatabase()
68                 给当前环境下的数据库改名
69                 如:
70                 String oldName = myDatabase.getDatabaseName();  
71                 String newName = new String(oldName + ".new", "UTF-8");
72                 myDatabase.close();
73                 myDbEnv.renameDatabase(null, oldName, newName);
74                 
75                 Environment.truncateDatabase()
76                 清空database内的所有数据,返回清空了多少条记录。
77                 如:
78                 Int numDiscarded= myEnv.truncate(null,
79                 myDatabase.getDatabaseName(),true);
80                 CheckMethods.PrintDebugMessage("一共删除了 " + numDiscarded +" 条记录 从数据库 " + myDatabase.getDatabaseName());
81              */
82         }
83         catch(DatabaseException e){
84             CheckMethods.PrintInfoMessage(e.getMessage());
85 
86         }
87     }
复制代码

 

View Code
View Code
View Code
View Code
View Code

 

 由于考虑到多线程,因此上面的方法都采用了事务,这样可以很好的保证数据的正确性。

来源 https://www.cnblogs.com/luchen927/archive/2011/06/25/2090400.html

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Berkeley DB
创建时间:2022-04-14 16:41:48
Berkeley DB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~