`
q474818917
  • 浏览: 38823 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

Berkeley DB 开源的文件数据库

 
阅读更多

开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储

下面是一个实例,是网上抄的,然后自己本机运行的

package org;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.concurrent.TimeUnit;

import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.TransactionConfig;

public class BerkeleyDB {
	
	private Environment environment = null;	//数据库环境		
	private DatabaseConfig dbConfig = null;	//数据库配置
	private Database database = null;	//数据库对象
	private String fileName = "D:\\wzx";
	private String dbName = "wzx";
	
	public void openDatabase(){
		EnvironmentConfig envConfig = new EnvironmentConfig();
		envConfig.setAllowCreate(true);
		envConfig.setTransactional(true);
		envConfig.setReadOnly(false);
		envConfig.setTxnTimeout(10000, TimeUnit.MILLISECONDS);
		envConfig.setLockTimeout(10000, TimeUnit.MILLISECONDS);
		
		File file = new File(fileName);
		if(!file.exists()){
			file.mkdirs();
		}
		environment = new Environment(file, envConfig);
		dbConfig = new DatabaseConfig();
		dbConfig.setAllowCreate(true);
		dbConfig.setTransactional(true);
		dbConfig.setReadOnly(false);
		
		if(database == null)
			database = environment.openDatabase(null, dbName, dbConfig);
		
	}
	
	public boolean insert(String key, String value, boolean isOverWrite){
		
		try {
			DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
			DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));
			OperationStatus os = null;
			Transaction transaction = null;
			
			TransactionConfig txnConfig = new TransactionConfig();
			txnConfig.setSerializableIsolation(true);
			
			transaction = environment.beginTransaction(null, txnConfig);
			if(isOverWrite){
				os = database.put(transaction, theKey, theData);
			}else{
				os = database.putNoOverwrite(transaction, theKey, theData);
			}
			transaction.commit();
			
			if(os == OperationStatus.SUCCESS){
				return true;
			}else{
				return false;
			}
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return false;
	}
	
	public String query(String key){
		try {
			DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
			DatabaseEntry theData = new DatabaseEntry();
			
			Transaction transaction = null;
			
			TransactionConfig txnConfig = new TransactionConfig();
			txnConfig.setSerializableIsolation(true);
			
			transaction = environment.beginTransaction(null, txnConfig);
			
			OperationStatus os = database.get(transaction, theKey, theData, LockMode.DEFAULT);
			transaction.commit();
			
			if(os == OperationStatus.SUCCESS){
				String value = new String(theData.getData(), "UTF-8");
				return value;
			}else{
				return "";
			}
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public void close(){
		if(database != null){
			database.close();
		}
		if(environment != null){
			environment.cleanLog();
			environment.close();
		}
	}
	
	public static void main(String[] args) {
		BerkeleyDB berkeleyDb = new BerkeleyDB();
		berkeleyDb.openDatabase();
		/*berkeleyDb.insert("China", "北京", true);
		berkeleyDb.insert("US", "纽约", true);*/
		System.out.println(berkeleyDb.query("China"));
		
	}
	
	
	
}

 

分享到:
评论

相关推荐

    BerkeleyDB-0.26

    BerkeleyDB和Sqlite是当前最流行的嵌入式开源数据库。

    Berkeley DB

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

    BerkeleyDB_Introduction.rar_Berkeley_Berkeley DB

    Berkeley DB,开源的嵌入式数据库。效率很高,这是一个帮助文档(英文的)

    Java-Edition-BerkeleyDB-3.1.0.zip_BerkeleyDB

    Java-Edition-BerkeleyDB-3.1.0,国外的开源数据库,供大家参考

    db-4.7.25-master_db-4.7.25-master_berkeleydbvxworks_BerkeleyDB_源

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

    berkeley DB使用

    berkeley DB 是一个非常优秀的开源嵌入式数据库~几乎可以用于目前所有的操作系统。

    BerkleyDB 内存数据库

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

    嵌入式开源数据库资料

    嵌入式开源数据库资料+源码 学习 PostgresSQL Postgres 可追溯至1986年的加州柏克莱大学。该大学在1994年以BSD授权方式将程式码开放给开源码社群,社群则加入了SQL支援,然後一直研发该软体至今。部分原始程式码与...

    嵌入式开源数据库系统对比

    嵌入式开源数据库系统对比 Derby\H2\SqlLite\ HSQLDB \ oracle Berkeley DB各有优劣

    Greybird DB - A Java API for Berkeley DB-开源

    Greybird DB 是一个 Java 框架,用于基于 Sleepycat Software 的 Berkeley DB 构建嵌入式数据库应用程序。 麻省理工学院执照。 需要 Java 1.3.1+ 和 Berkeley DB 4.0.14。

    libdb5:根据Berkeley数据库许可获得许可的Oracle Berkeley DB的最新版本

    (5.3.28)-开源版本Berkeley DB的最新版本,该版本已获得Berkeley数据库许可(也称为Sleepycat软件产品许可)的许可。 从下一个版本12.1。(6.0.20)开始,这些开源版本已获得许可。 要查看发行和安装的原始文档,...

    开源嵌入式数据库Bericel ey DB和SQLite的比较

    深入分析、比较Berkeley DB和sQLite。Berkel ey DB和sQLite是源码开放的嵌入式数据库管理系统,无需安装,体积小巧,速度又很快;可以很方便地应用在掌上电脑、PDA、车载设备、移动电话等MySQL、SQL Server这些大中...

    Berkeley DB Manipulation Tool-开源

    伯克利数据库管理工具(BMT)希望成为一种基于提供的定义来打开/搜索/编辑/浏览伯克利数据库的工具。 可以使用文本命令行界面以及图形前端进行操作。

    基于Berkeley DB的机房环境监控系统

    为了提高该监控系统的可靠性和稳定性,采用嵌入式数据库Berkeley DB,利用交叉编译器对数据库文件进行交叉编译,并且在ARM系统上添加动态链接库的方法实现数据库在ARMLinux环境下的稳定运行,实现了基于Berkeley DB...

    电子测量中的基于Berkeley DB的机房环境监控系统

    为了提高该监控系统的可靠性和稳定性,采用嵌入式数据库Berkeley DB,利用交叉编译器对数据库文件进行交叉编译,并且在ARM系统上添加动态链接库的方法实现数据库在ARMLinux环境下的稳定运行,实现了基于Berkeley DB...

    Berkeley DB Java Edition 4.0.92 开发包

    这个是最流行的嵌入式高性能开源数据库内核开发包,java企业开发必备。

    SQLite教程(一):SQLite数据库介绍

     SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。...

    数据库封装

    封装了几种使用的数据库,大型关系数据库PeostgreDB,嵌入式NOSQL数据库BerkeleyDB,SQL内存数据库sqlite,NOSQL内存数据库Perst以及多模式数据库 H2,这些数据库是在服务端进行组合使用的,以后会封装使用框架。并且...

    SimpleDB:简单的数据库管理系统

    #SimpleDB这是我的合作伙伴一个基本的数据库管理系统,我为UC Berkeley的Database类CS186编写了代码。 它称为SimpleDB,由4个项目组成。 ### SimpleDB包含: 表示字段,元组和元组模式的类; 将谓词和条件应用于...

Global site tag (gtag.js) - Google Analytics