package com.yihaodian.testBDB;
import java.io.File;
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.EnvironmentStats;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.StatsConfig;
import com.sleepycat.persist.EntityCursor;
import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.PrimaryIndex;
import com.sleepycat.persist.StoreConfig;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.PrimaryKey;
public class MyBerkeleyDB {
private Environment env;
private Database db;
public MyBerkeleyDB() {
}
/** 构建Environment: 指定存储的文件(一个Environment可以有多个数据库) */
public void setUp(String path, long cacheSize) {
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setCacheSize(cacheSize);// The memory available to the
// database system, in bytes.
File dir = new File(path);
if (!dir.exists()) {// 如果指定的目录不存在,则自动创建
dir.mkdir();
System.out.println("创建目录:" + path);
}
try {
env = new Environment(dir, envConfig);
} catch (DatabaseException e) {
e.printStackTrace();
}
}
/** 构建Database: 指定数据库名字,如果指定名字的数据库不存在,则自动创建。 */
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();
}
}
/**
* 数据操作:写 BDB存储的数据是无格式的,都是二进制的数据,无论是KEY,还是VALUE。
* 如果我们要存取JAVA对象,需要程序员先序列化成二进制的。
* */
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;
}
/** 数据操作:读 */
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;
}
/** 数据操作:修改 (覆盖写就是修改) */
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;
}
/** 数据操作:删除 */
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;
}
public static void main(String[] args) throws Exception {
// MyBerkeleyDB mbdb = new MyBerkeleyDB();
// mbdb.setUp("E:\\bdb", 1000000);
// mbdb.open("myDB");
// System.out.println("开始向Berkeley DB中存入数据...");
// for (int i = 0; i < 20; 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.put("liwei", "20");
// String value = mbdb.get("liwei");
// System.out.println(value);
//
// mbdb.close();
File envHome = new File("E:\\bdb");
EnvironmentConfig configuration = new EnvironmentConfig();
configuration.setAllowCreate(true);
configuration.setTransactional(false);
configuration.setCachePercent(10);
configuration.setReadOnly(false);
Environment env = new Environment(envHome, configuration);
StoreConfig config = new StoreConfig();
config.setAllowCreate(true);
config.setTransactional(false);
config.setReadOnly(false);
String storeName = "store";
EntityStore store = new EntityStore(env, storeName, config);
PrimaryIndex<Long, ProductEntity> bdb_result = store.getPrimaryIndex(Long.class, ProductEntity.class);
// bdb_result.put(new ProductEntity(11L, "product1"));
// bdb_result.put(new ProductEntity(12L, "product2"));
// bdb_result.put(new ProductEntity(13L, "product3"));
// bdb_result.put(new ProductEntity(14L, "product4"));
// bdb_result.put(new ProductEntity(15L, "product5"));
//
// store.close();
// env.checkpoint(null);
// env.close();
EntityCursor<Long> key_cursor = bdb_result.keys();
for(Long key:key_cursor){
System.out.println(key);
}
key_cursor.close();
EntityCursor<ProductEntity> productCursor = bdb_result.entities();
for(ProductEntity entity:productCursor){
System.out.println(entity.productName);
}
productCursor.close();
// printStats(env);
}
@Entity
static class ProductEntity {
@PrimaryKey
Long productId;
String productName;
ProductEntity(Long productId, String productName) {
this.productId = productId;
this.productName = productName;
}
private ProductEntity() {};
}
public static void printStats(Environment env){
StatsConfig statsConfig = new StatsConfig();
statsConfig.setClear(true);
EnvironmentStats stats = env.getStats(statsConfig);
System.out.println(stats.toString());
}
}
分享到:
相关推荐
**Berkeley DB (BDB) 使用指南** Berkeley DB(简称BDB)是Oracle公司提供的一款开源、嵌入式数据库系统,广泛应用于各种需要高效、可靠数据存储的应用中。本指南将详细介绍BDB的基本概念、安装配置、操作方法以及...
"BDB数据库测试工具"是一款专为BDB(Berkeley Database)设计的测试工具,主要用于在2007年版本中对数据库进行性能评估、功能验证和稳定性测试。这款工具无需安装,方便用户快速启动和使用,是开发者和数据库管理员...
Oracle中的BDB(Berkeley DB)数据库是一种轻量级、高性能的数据存储解决方案,尤其适合用于对数据快速存取和小型项目的需求。BDB是Oracle公司收购Sleepycat Software后得到的一种开源、嵌入式数据库系统,它以键/值...
基于bdb存贮的简单fifo持久队列,支持多个队列,采用bdb的btree方式组织数据。 启动参数说明: -n 数据库的文件名,默认为:xianglei.db -p http访问的端口号,默认:1985 -i http访问的ip地址,默认:127.0.0.1 -f ...
**伯克利数据库(Berkeley DB,简称BDB)** 伯克利数据库是Oracle公司提供的一款开源、嵌入式、键值对存储的数据库管理系统,主要用于处理轻量级数据存储和检索任务。它最初由伯克利大学开发,因此得名。在.NET环境...
BDB Professional Edition v2.8 >BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 >目前版本支持的数据库平台: > √ Access > √ MS SQLServer > √ Oracle > √ MySQL > √ SQL...
**Berkeley DB (BDB)** 是一款开源的嵌入式数据库系统,由Oracle公司开发,广泛应用于需要快速、高效数据存储的应用程序中。它提供了一种键值对存储模型,适用于构建事务处理、缓存、日志记录等多种场景。BDB在设计...
**BDB数据库设计软件详解** BDB(Berkeley DB)是一种流行的数据存储系统,由甲骨文公司开发,主要用于构建高性能、轻量级的应用程序,尤其是那些需要高速数据访问和低延迟的应用。作为一款强大的数据库设计软件,...
BDB Developer Edition v3.0 >BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 >目前版本支持的数据库平台: > √ Access > √ MS SQLServer > √ Oracle > √ MySQL > √ SQLAnyWhere...
SVN客户端升级以后打开原来版本库报错Failed to load module for FS type 'bdb',使用该资源下载后解压将原版本库文件夹更名为bdb放到dbd2fsfs.bat同一目录,双击dbd2fsfs.bat,生成fsfs文件夹。用新SVN客户端就可以...
**BDB数据库管理工具(PJ)** BDB,全称为Berkeley Database,是由Sleepycat Software开发的一个开源、高性能、嵌入式的关系型数据库系统。它最初由伯克利大学开发,因此得名“Berkeley DB”。BDB以其轻量级、高...
Bainsoft BDB 3.2是一款强大的数据库管理工具,专为专业人士设计,以支持多种主流数据库系统,包括Oracle、DB2、MySQL以及Access。它的出现旨在提供一个集成化、高效的平台,帮助数据库管理员和开发人员更加便捷地...
**BDB 2007** 是由贝恩软件(Bainsoft)开发的一款专业数据库设计与部署工具。这款软件支持多种主流数据库平台,包括 Oracle、Microsoft SQL Server、MySQL、Access、SQL Anywhere 和 Sybase。 **特点**: - 支持多...
数据库设计工具BDB 最新版 v3.0 v3.0 下载: 1) 中文简体版: [url]http://www.bainsoft.com/downloads/BDB.rar[/url] 2) 英文版: [url]http://www.bainsoft.com/downloads/BDBEN.rar[/url] v3.0版本更新: 1, 增加...
<br>您可以通过BDB来简化软件开发和部署过程: <br>1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 <br>2,数据库...
BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、MS SQLServer、Access、MySQL、SQLAnyWhere、Sybase数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以...
BDB系列的轻量级版本,开放了绝大部分功能,如: 数据库设计,SQL智能化查询分析, 数据库管理,同步功能,和Excle文件之间的数据导入导出等等. <br>BDB支持的数据库平台: Oracle,SQLServer,MySQL,Access,SQL...
BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、SQLServer、Access、MySQL、SQLAnyWhere数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以为您的应用...
Berkeley DB(简称BDB)是Oracle公司开发的一款开源、轻量级、嵌入式数据库系统,广泛应用于需要快速数据存储和检索的应用场景。在18.1.40这个版本中,BDB继续提供了对高性能、低延迟数据管理的支持,尤其适合于内存...