`
xyliufeng
  • 浏览: 88415 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

BerkeleyDB 例子

阅读更多
package test;

import java.io.File;
import java.security.MessageDigest;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;

public class MyBerkeleyDB {

	private Environment env;
	private Database db;
	
	public MyBerkeleyDB() {
	
	}

	public void setUp(String path, long cacheSize) {
		EnvironmentConfig envConfig = new EnvironmentConfig();
		envConfig.setAllowCreate(true);
		envConfig.setCacheSize(cacheSize);
		try {
			env = new Environment(new File(path),envConfig);
		} catch (DatabaseException e) {
			e.printStackTrace();
		}
	}
	
	public void open(String dbName) {
		DatabaseConfig dbConfig = new DatabaseConfig();
		dbConfig.setAllowCreate(true);
		try {
			db = env.openDatabase(null, dbName, dbConfig);
		} catch (DatabaseException e) {
			e.printStackTrace();
		}
	}
	
	public void close() {
		try {
			if(db != null) {
				db.close();
			}
			if(env != null) {
				env.close();
			}
		} catch (DatabaseException e) {
			e.printStackTrace();
		}
	}
	//get
	public String get(String key) throws Exception {
		DatabaseEntry queryKey = new DatabaseEntry();
		DatabaseEntry value = new DatabaseEntry();
		queryKey.setData(key.getBytes("UTF-8"));
		
		OperationStatus status = db.get(null, queryKey, value,
		LockMode.DEFAULT);
		if (status == OperationStatus.SUCCESS) {
			return new String(value.getData());
		}
		return null;
	}
	//put
	public boolean put(String key, String value) throws Exception {
		byte[] theKey = key.getBytes("UTF-8");
		byte[] theValue = value.getBytes("UTF-8");
		OperationStatus status = db.put(null, new DatabaseEntry(theKey),
		new DatabaseEntry(theValue));
		if(status == OperationStatus.SUCCESS) {
			return true;
		}
		return false;
	}
       //delete
       public boolean delete(String key) throws Exception 
	{
		   byte[] theKey = key.getBytes("UTF-8");
		   OperationStatus status = db.delete(null, new DatabaseEntry(theKey));
		   if(status == OperationStatus.SUCCESS) {
		    return true;
		   }
		   return false;
	}
	//update
	public boolean update(String key, String value) throws Exception 
	{
		   byte[] updateKey = key.getBytes("UTF-8");
		   byte[] updateValue = value.getBytes("UTF-8");

		   OperationStatus status = db.put(null, new DatabaseEntry(updateKey), new DatabaseEntry(updateValue));
		   if (status == OperationStatus.SUCCESS) {
		    return true;
		   }
		   return false;
	}
       //md5
	public static String md5(String string) 
	{
		char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
		'e', 'f' };
		try {
		byte[] bytes = string.getBytes();
		MessageDigest messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.update(bytes);
		byte[] updateBytes = messageDigest.digest();
		int len = updateBytes.length;
		char myChar[] = new char[len * 2];
		int k = 0;
		for (int i = 0; i < len; i++) {
		byte byte0 = updateBytes[i];
		myChar[k++] = hexDigits[byte0 >>> 4 & 0x0f];
		myChar[k++] = hexDigits[byte0 & 0x0f];
		}
		return new String(myChar);
		} catch (Exception e) {
		return null;
		}
	}

	public static void main(String[] args) {
		MyBerkeleyDB mbdb = new MyBerkeleyDB();
		mbdb.setUp("C:/bdb", 1000000);
		mbdb.open("myDB");
		System.out.println("开始向Berkeley DB中存入数据…");
		try {
			//mbdb.put("xp", "I'm in shanghai");
			//System.out.println(mbdb.get("xp"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(int i=0; i<10000; i++) {
			try {
				String key = "myKey"+i;
				String value = "myValue"+i;
				System.out.println("[" + key + ":" + value + "]");
				mbdb.put(key , value);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		mbdb.close();

	}
}


分享到:
评论

相关推荐

    Berkeley DB参考手册PDF版本

    #### 1.1 Introduction to BerkeleyDB Cursor - **定义与作用**:游标是Berkeley DB提供的一种高效访问数据库记录的方式,通过游标可以实现对数据库中记录的查找、修改和删除等操作。 - **应用场景**:适用于需要...

    Berkeley DB参考资料

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

    Berkeley DB C++编程入门教

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

    Berkeley DB文章集合

    在 Berkeley DB 中,游标是通过调用 `Db::cursor` 方法创建的。这个方法需要一个事务对象(`DbTxn *txnid`)作为参数,如果你不使用事务,可以传入 `NULL`。第二个参数是游标指针的引用,`Dbc **cursorp`,方法执行...

    Berkeley DB

    在 Berkeley DB 中,游标通过 `Db::cursor` 方法打开。此方法需要一个事务对象 `DbTxn *txnid`(如果在事务保护下操作),一个指向游标对象的指针 `dbc**cursorp`,以及一组标志 `u_int32_t flags` 来指定特定的行为...

    Berkeley DB完整资料

    **Berkeley DB** 是一款轻量级、高性能的嵌入式数据库系统,由Oracle公司开发。它被广泛用于需要在应用程序内部存储和管理数据的场景,尤其适合在资源有限的环境,如移动设备或嵌入式系统。Berkeley DB 提供了键值对...

    BerkeleyDB-Core-c++-GSG

    ### BerkeleyDB-Core-c++-GSG 知识点解析 #### 一、Berkeley DB 概述 **Berkeley DB** 是一款高性能的关键值存储数据库系统,被广泛应用于多种应用场景中,包括嵌入式系统、应用程序服务器等。该文档主要介绍了...

    Berkeley DB for c.doc

    Berkeley DB 是一款轻量级、高性能的键值存储系统,专为嵌入式应用和分布式服务设计。它提供了一种高效、灵活的方式来管理和存储数据,尤其适合在资源有限的环境中,如嵌入式设备或者作为应用程序的一部分。Berkeley...

    Berkeley_DB_参考手册

    ### Berkeley_DB 参考手册知识点概览 #### 1. Berkeley DB 概述 - **开发者**:Berkeley DB 由 Sleepycat Software 公司开发,后被 Oracle 收购。 - **特性**:Berkeley DB 是一个高度可定制且性能卓越的嵌入式...

    Berkeley DB -- 入门知识和一个小例子_iyangjian2005997_新浪博客.mht

    Berkeley DB -- 入门知识和一个小例子_iyangjian2005997_新浪博客.mht

    Python bsddb模块操作Berkeley DB数据库介绍

    5. 操作示例:内容中给出了一个使用bsddb模块创建和操作Berkeley DB数据库的例子。示例中首先展示了如何使用原始接口创建数据库环境和打开数据库,然后演示了如何插入数据和关闭数据库。另外,还给出了使用queue数据...

    jbbp:基于 Java BerkeleyDB 的 Persister

    #JBBP - 基于 Java BerkeleyDB 的 Persister 这是一个使用的持久器。 BerkeleyDB 是一个键值数据库,支持完整的 ACID 事务、DPL Java 访问、多线程模型但基于单进程、键控和顺序数据检索等。 然而,使用 Berkeley...

    ruby-bdb:Guy Decoux的Sleepycat Berkeley DB和DB XML的Ruby绑定

    Oracle分发的Berkeley DB的Ruby接口 先决条件 db&gt; = 2(db 使用--with-db-dir=$prefix选项指定此扩展名应与哪个libdb链接。 笔记 当bdb&gt; = 0.5.5时,“ nil”被存储为空字符串(不使用封送时)。 使用打开数据库 ...

    db-4.6.18.tar.gz

    - **Berkeley DB**:Berkeley DB提供了一个简单易用的接口,用于实现键/值数据存储。它支持多种编程语言,如C、C++、Java等,并且可以在多种操作系统上运行,包括Linux、Unix和Windows。 4. **安装与配置**: - *...

    LAMP----linux+apache+mysql+php详细安装步骤.pdf

    5. 配置环境变量:在`/etc/ld.so.conf`中添加`/usr/local/BerkeleyDB.4.4/lib`,执行`/sbin/ldconfig`,并在`/etc/profile`末尾添加LD路径。 对于openldap的安装,步骤类似,需要先上传并解压缩openldap的源代码包...

    ice3.4文档

    这些产品包括由Oracle开发的Berkeley DB、Julian R. Seward开发的bzip2/libbzip2、由OpenSSL项目开发的OpenSSL工具包、由Eric Young开发的SSLeay、James Clark开发的Expat以及由STLport标准库项目开发的STLport。除...

    mysql-noinstall安装指南.docx

    8. **存储引擎**:如果不需要BDB(Berkeley DB)存储引擎,可以使用`skip-bdb`跳过;对于InnoDB引擎,可以设置`innodb_data_home_dir`和`innodb_log_group_home_dir`来指定InnoDB表的数据和日志文件路径,但在这个...

    linux下安装配置svn独立服务器.pdf

    在这个例子中,我们选择不使用Berkeley DB(BDB),因为它在服务器异常中断时可能导致数据锁定,而是选择更安全的FSFS存储格式。因此,配置命令如下: ```bash ./configure --prefix=/opt/svn --without-berkeley-...

    在linux下安装配置svn独立服务器

    SVN支持两种存储库后端:Berkeley DB(BDB)和File System File Format(FSFS)。由于BDB在服务器异常中断时可能会锁定数据,因此建议使用更安全的FSFS。 接下来是配置步骤: 1. 创建版本库目录,你可以创建多个,...

    嵌入式数据库总结PPT学习教案.pptx

    非关系型数据库如Berkeley DB,支持多种数据结构,适用于半结构化或非结构化数据。 SQLite是典型的嵌入式关系型数据库,它被广泛应用于Android开发中。SQLiteOpenHelper类用于管理数据库版本和创建/升级数据库,而...

Global site tag (gtag.js) - Google Analytics