Berkeley DB学习(一)
一、简介
定义: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学习(一)相关推荐
- Berkeley DB JE 学习笔记
本篇是在学习BDB JE的使用.阅读源码并参读文档后的笔记,涉及到内部实现细节,写的比较零散,也有很多疏漏,仅作为笔记待查. Berkeley DB JE简介及主要特点 Java版Berkeley D ...
- 新浪研发中心: Berkeley DB 使用经验总结
http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.html NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据.Be ...
- 嵌入式数据库BERKELEY DB 之dubbo实战
berkeley db 时oracle旗下的一款嵌入式数据库...当然,在互联网业界,他并不火,但是它确实很省内存,,对于一些想要替换redis的解决方案--可以考虑..想要学习它.甚至在一些主流的网 ...
- Berkeley DB
我们公司的产品中用到了伯克利db数据库,闲着没事干,学习了一下: 1:Berkeley DB是一个开源的文件数据库,嵌入式数据库系统.介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的 ...
- Berkeley DB的sql实现
常常有人问 Oracle Berkeley DB " 我如何在 Berkeley DB 中进行 ?" 因此,我们此处将介绍如何在 Oracle Berkeley DB 中实施众多您 ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)...
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统) ...
- 免费数据库(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 ...
- 免费数据库(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 ...
最新文章
- git配置报错fatal: Authentication failed for ‘‘问题解决
- MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
- Java -- 网络编程(一):Client与Server之间的数据传送
- python调用matlab环境配置、非常详细!!!_[python][matlab]使用python调用matlab程序
- 进击的新势力·95后短视频冲浪与消费图鉴2021
- php 文本处理 库,处理文本的PHP库
- 反转链表python
- [转] js中的钩子机制(hook)
- 沙利文:2019Q4中国公有云市场份额:阿里云、腾讯云、华为云位列前三
- AspNetForums 开发过程中的源代码管理
- 修改pip下载存放和安装位置
- 基于stc15f2k60s2芯片单片机编程(流水灯)
- 医惠护理系统服务器错误,医惠智能云随访系统
- ubuntu20.04上编译android 7.1
- 一些常用软件镜像地址
- 胆囊息肉,需要切除吗
- 西方科学家依然对互联网的进化表示质疑
- matlab画图五角星标记,Matlab---画图线型、符号及颜色
- 华为交换机日志格式和级别说明
- MySQL:递减/递减更新一列字段值
热门文章
- 调节e18-d80nk的测量距离_机械加工常用测量器具和使用知识
- 《极客时间·每日一课》笔记
- 冯•诺伊曼的1930年代
- EF 常见错误, 无法加载指定的元数据资源、实体的验证失败等
- android wifi互传文件在哪里,如何在android中找到通过wifi直接模式传输的文件的文件名?...
- 西安市基础教育科研“十三五”规划2019年度小课题(开题报告)
- Cortex-A8异常处理
- 视频教程-HTML5和CSS3移动端开发全套教程-HTML5/CSS
- 拼多多商品详情接口测试及申请
- 电脑有网浏览器没网(解决)