`
q474818917
  • 浏览: 40266 次
  • 性别: 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** 是一款由 Oracle 公司开发的开源、高性能、无模式的键值对存储数据库系统。它在嵌入式环境和轻量级应用程序中被广泛使用,尤其适用于那些需要快速数据访问和简单数据管理的应用。BerkeleyDB 的设计...

    Berkeley DB C++编程入门教

    在“BerkeleyDB概念”部分,文档会介绍Berkeley DB的基本概念,如BTree和Hash数据库的访问方式选择,以及Queue和Recno之间的选择。 接下来,教程会讨论数据库的限制与可移植性、环境设置、异常处理和错误返回。然后...

    Berkeley DB参考资料

    BerkeleyDB 多库联合操作 (Secondary Databases) - **3.1 二级数据库介绍** - **概念解释**:二级数据库是对主数据库的一个索引,用于提高查询效率。 - **应用场景**:快速查找、数据统计等。 - **3.2 创建二级...

    Berkeley DB参考手册PDF版本

    BerkeleyDB开源嵌入式数据库测评报告 - **25.1 测评报告**:提供Berkeley DB的性能测试结果及使用心得。 - **性能评估**:对Berkeley DB的各项性能指标进行评估。 - **使用心得**:分享使用者对于Berkeley DB的实际...

    BerkeleyDB的参考书集

    BerkeleyDB,简称BDB,是一个开源的、高性能的、嵌入式数据库系统,广泛应用于各种分布式应用、日志记录、缓存服务等领域。 在这个压缩包中,我们可以找到以下文件,每一份都是BerkeleyDB学习的重要资料: 1. **...

    sqlite PK Berkeley DB

    在信息技术领域,数据库技术是支撑现代软件应用的关键基石之一,其中,sqlite和Berkeley DB作为两款优秀的开源嵌入式数据库管理系统,因其轻量级、高性能及易于集成的特性,在嵌入式系统中占有举足轻重的地位。...

    db-4.7.25-master_db-4.7.25-master_berkeleydbvxworks_BerkeleyDB_源

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

    Berkeley DB 4.8.30

    3. **编译**:进入解压后的目录,执行`./configure --prefix=/usr/local/BerkeleyDB.4.8`进行配置,指定安装路径,然后使用`make`进行编译,最后用`sudo make install`安装。 4. **配置Open LDAP**:在Open LDAP的...

    SQL 开发人员 Oracle Berkeley DB 指南

    Oracle Berkeley DB是一个开源的嵌入式数据库引擎,它提供了高效、可靠的本地持久性存储,无需独立的数据库管理系统。这个数据库引擎特别适合那些需要固定查询模式并且对性能有较高要求的应用程序。本文将探讨如何在...

    BerkeleyDB_java_jar包

    BerkeleyDB是一个开源的、基于键值对的嵌入式数据库系统,由Oracle公司提供。它为Java开发者提供了丰富的API,使得在Java应用程序中轻松集成数据存储成为可能。标题中的"BerkeleyDB_java_jar包"指的是适用于Java开发...

    SQL开发与berkeleyDB

    BerkeleyDB是一款开源的嵌入式数据库引擎,以其高性能、高可靠性和本地持久性而著称。由于它无需专门的数据库管理服务,使得开发者可以直接在应用程序中集成数据库功能,极大地提高了应用的灵活性与效率。对于那些...

    Berkeley DB

    Berkeley DB 是一个高度可移植的、开源的、非关系型数据库管理系统,由Oracle公司开发并维护。它的设计理念是提供轻量级、高性能的数据存储解决方案,适用于嵌入式系统和分布式应用程序。在标题和描述中,我们可以...

    BerkerleyDb-18.1.40.tar.gz

    BerkeleyDB(简称BDB)是由Oracle公司开发的一款开源、轻量级、嵌入式数据库系统。它以其高效、灵活和可靠的特点,广泛应用于各种软件项目,特别是在分布式系统、网络服务以及需要快速数据存储的应用中。在本文中,...

    Berkeley_DB_m.rar_Berkeley_Berkeley DB

    Berkeley DB(简称 BDB)是一款开源、嵌入式、事务处理型数据库系统,由 Sleepycat Software 开发,后来被 Oracle 公司收购。这款数据库系统因其轻量级、高效能以及高度可定制的特点,广泛应用于各种应用程序,特别...

    BerkeleyDB-Core-Cxx-GSG.rar_Berkeley DB_berkeley Db cxx

    对于初次接触Berkeley DB的开发者,"BerkeleyDB-Core-Cxx-GSG.pdf"这份文档是一个很好的起点。它详尽地介绍了如何在C++环境中配置、初始化Berkeley DB环境,以及如何使用C++接口进行数据操作。同时,它也涵盖了错误...

    Java嵌入式NoSQL数据库之Berkeley DB Java Edition

    **Java嵌入式NoSQL数据库之Berkeley DB Java Edition** Berkeley DB Java Edition(简称BDB JE)是一种高性能、轻量级的嵌入式数据库系统,由Oracle公司开发,广泛应用于需要快速数据存储和检索的应用场景。它并非...

    Java-Edition-BerkeleyDB-3.1.0.zip_BerkeleyDB

    在Je-3.1.0版本中,BerkeleyDB使用特定的数据库文件格式,这些文件可以在不同平台上进行迁移,确保了跨平台的兼容性。 **7. 性能优化** BerkeleyDB提供了多种性能调优选项,如缓存大小设置、日志文件管理等,...

Global site tag (gtag.js) - Google Analytics