一、简介

定义:Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤。

1)开源的kv类型数据库
2)文件数据库:
优点:数据保存在单一文件中,部署以及发布简单,使用内嵌在应用程序中。
缺点:数据库打开时,文件会被加载到内存,因为数据库不宜过大。
3)嵌入式数据库,提供一系列API,调用简单。
DB库和应用程序可一起编译成为可执行程序
4)基于3,DB库和应用程序在同一个地址空间,所以DB库无网络通信模块。
5)基于3,不支持对SQL代码解码,可以直接访问数据。后期支持部分SQL
6)提供多编程语言调用的各个版本

二、产生背景:

开发目的:以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm)
开发者:Sleepycat公司,06年被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是6.4.9。

三、使用:

(1)maven依赖添加:

<!-- 加入java bdb 3.3.75/6.4依赖 --><dependency>          <groupId>com.sleepycat</groupId>        <artifactId>je</artifactId>           <version>3.3.75</version></dependency>
<!-- 专业下载bdb依赖添加的仓库源 -->
<repository><id>oracleReleases</id>        <name>Oracle Released Java Packages</name><url>http://download.oracle.com/maven</url>        <layout>default</layout>
</repository>

(2)基本API应用:
数据库环境变量配置

/**
*初始化数据库参数
*/
//数据库所在的存储文件夹
String dbEnvFilePath="bdb";
//数据库名称
String database="weibo";
//环境变量的声明
Environment myDbEnvironment=null;
//数据库操作的对象声明
Database weiboDatabse=null;
try{//初始化数据存储根目录文件夹File f=new File(dbEnvFilePath);if(!f.exists()){f.mkdirs;}//数据库配置变量初始化DatabaseConfig dbConfig=new DatabaseConfig();//打开数据库dbConfig.seteAllowCreate(true);//初始化环境变量配置,基于该变量去配置环境变量EnvironmentConfig envConfig=new EnvironmentConfig();//当使用的数据库配置变量不存在的时候,就自动创建envConfig.setAllowCreate(true);//正式初始化数据库的环境myDbEnvironment=new Environment(f,envConfig);//打开一个数据库,如果不存在,就自动创建你weiboDatabase=myDaEnvironment.openDatabase(null,database,dbConfig);
}catch(Exception e){e.printStackTrace();
}

数据库CRUD操作-——创建create

weiboDatabase=myDbEnvironment.openDatbase(null,database,dbConfig);

数据库CRUD操作-——增加add

//存储数据//数据的keyString akey="key1";//数据的valueString aData="data";try{//将key和value都封装到DatabaseEntry中DatabaseEntry theKey=new DatabaseEntry(aKey.getBytes("UTF-8"));DatabaseEntry theData=new DatabaseEntry(aData.getBytes("UTF-8"));//写入数据库weiboDatabase.put(null,theKey,theData);//对该库进行count操作,查看有多少条数据System.out.println(weiboDatbase.count());}catch(Exception e){e.printStackTrace();}

数据库CRUD操作-——读取read

//读取数据//要读取数据的keyaKey="key1";try{//将读取数据的key封装到DatabaseEntry中DatabaseEntry theKey=new DatabaseEntry(aKey.getBytes("UTF-8"));DatabaseEntry theData=new DatabaseEntry();//执行读取操作weiboDatabase.get(null,theKsy,theData,LockMode.DEFAULT);//将二进制数据转换为字符串值String result=new String(theData.getData(),"UTF-8");//打印System.out.println(result);}catch(Exception e){e.printStackTrace();}

数据库CRUD操作-——删除Delete

//删除数据//要删除的数据keyaKey="key1";try{//将要删除数据的key封装到DatabaseEntry中DatabaseEntry theKey=new DatabaseEntry(aKey.getBytes("UTF-8"));//执行删除操作          weiboDatabase.delete(null, theKey);          //查看数据库当前的记录数         System.out.println(weiboDatabase.count());}catch (Exception e) {          e.printStackTrace();}

关闭数据库

// 关闭try {         //先关闭数据库          if (weiboDatabase != null) {             weiboDatabase.close();          }          //再关闭BDB系统环境变量         if (myDbEnvironment != null) {                               myDbEnvironment.sync();             myDbEnvironment.cleanLog(); // 在关闭环境前清理下日志             myDbEnvironment.close();          }       } catch (Exception e) {          e.printStackTrace();}

Berkeley DB学习(一)相关推荐

  1. Berkeley DB JE 学习笔记

    本篇是在学习BDB JE的使用.阅读源码并参读文档后的笔记,涉及到内部实现细节,写的比较零散,也有很多疏漏,仅作为笔记待查. Berkeley DB JE简介及主要特点 Java版Berkeley D ...

  2. 新浪研发中心: Berkeley DB 使用经验总结

    http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.html NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据.Be ...

  3. 嵌入式数据库BERKELEY DB 之dubbo实战

    berkeley db 时oracle旗下的一款嵌入式数据库...当然,在互联网业界,他并不火,但是它确实很省内存,,对于一些想要替换redis的解决方案--可以考虑..想要学习它.甚至在一些主流的网 ...

  4. Berkeley DB

    我们公司的产品中用到了伯克利db数据库,闲着没事干,学习了一下: 1:Berkeley DB是一个开源的文件数据库,嵌入式数据库系统.介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的 ...

  5. Berkeley DB的sql实现

    常常有人问 Oracle Berkeley DB " 我如何在 Berkeley DB 中进行 ?" 因此,我们此处将介绍如何在 Oracle Berkeley DB 中实施众多您 ...

  6. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)...

    SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...

  7. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)

    SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite  最适合做 CMS  (内容管理系统) ...

  8. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Ex

    转于http://www.php100.com/html/itnews/it/2012/1207/11721.html SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Acces ...

  9. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE

    免费数据库(SQLite.Berkeley DB.PostgreSQL.MySQL.Firebird.mSQL.MSDE.DB2 Express-C.Oracle XE 2009-02-16 11:2 ...

最新文章

  1. git配置报错fatal: Authentication failed for ‘‘问题解决
  2. MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
  3. Java -- 网络编程(一):Client与Server之间的数据传送
  4. python调用matlab环境配置、非常详细!!!_[python][matlab]使用python调用matlab程序
  5. 进击的新势力·95后短视频冲浪与消费图鉴2021
  6. php 文本处理 库,处理文本的PHP库
  7. 反转链表python
  8. [转] js中的钩子机制(hook)
  9. 沙利文:2019Q4中国公有云市场份额:阿里云、腾讯云、华为云位列前三
  10. AspNetForums 开发过程中的源代码管理
  11. 修改pip下载存放和安装位置
  12. 基于stc15f2k60s2芯片单片机编程(流水灯)
  13. 医惠护理系统服务器错误,医惠智能云随访系统
  14. ubuntu20.04上编译android 7.1
  15. 一些常用软件镜像地址
  16. 胆囊息肉,需要切除吗
  17. 西方科学家依然对互联网的进化表示质疑
  18. matlab画图五角星标记,Matlab---画图线型、符号及颜色
  19. 华为交换机日志格式和级别说明
  20. MySQL:递减/递减更新一列字段值

热门文章

  1. 调节e18-d80nk的测量距离_机械加工常用测量器具和使用知识
  2. 《极客时间·每日一课》笔记
  3. 冯•诺伊曼的1930年代
  4. EF 常见错误, 无法加载指定的元数据资源、实体的验证失败等
  5. android wifi互传文件在哪里,如何在android中找到通过wifi直接模式传输的文件的文件名?...
  6. 西安市基础教育科研“十三五”规划2019年度小课题(开题报告)
  7. Cortex-A8异常处理
  8. 视频教程-HTML5和CSS3移动端开发全套教程-HTML5/CSS
  9. 拼多多商品详情接口测试及申请
  10. 电脑有网浏览器没网(解决)