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 BerkeleyDB {
private Environment env;
private Database db;
public BerkeleyDB() {
}
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();
}
}
public synchronized String get(String key) {
DatabaseEntry queryKey = new DatabaseEntry();
DatabaseEntry value = new DatabaseEntry();
try{
queryKey.setData(key.getBytes("UTF-8"));
OperationStatus status = db.get(null, queryKey, value, LockMode.DEFAULT);
if (status == OperationStatus.SUCCESS) {
return new String(value.getData());
}
}catch(Exception ex) {
//ex.printStackTrace();
return null;
}
return null;
}
public synchronized boolean put(String key, String value) {
try{
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;
}
}catch(Exception ex) {
//ex.printStackTrace();
return false;
}
return false;
}
public synchronized 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 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 static void main(String[] args) {
BerkeleyDB bdb = new BerkeleyDB();
bdb.setUp("d:/news/data"/**HttpContext.getConfig().getString(AppConfig.BDB_PATH)**/, 1000*1000);
bdb.open("searchDB");
try {
boolean isExists = bdb.get("你好啊")!=null;
System.out.println("--isExists-->"+isExists);
if (!isExists) {
System.out.println("--->不存在了啊!sss");
}
if (bdb.get("你好啊")!=null) {
System.out.println("--->已经存在了啊!");
}
System.out.println("-----------"+bdb.get("你好啊")+"------"+bdb.get("你好啊1"));
} catch (Exception e) {
e.printStackTrace();
}
bdb.close();
}
}
b-db在项目中也有应用,写了个基本的类:
分享到:
相关推荐
Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统以及实时操作系统。 #oracle 介绍关于berkeleydb ...
在“BerkeleyDB概念”部分,文档会介绍Berkeley DB的基本概念,如BTree和Hash数据库的访问方式选择,以及Queue和Recno之间的选择。 接下来,教程会讨论数据库的限制与可移植性、环境设置、异常处理和错误返回。然后...
《Berkeley DB:性能指标与基准测试》是一份由Oracle发布的白皮书,该文档主要关注于Oracle Berkeley DB在不同操作系统、硬件平台及配置下的性能表现。本文旨在为用户提供关于Berkeley DB在常见配置下的性能预期,并...
6. **跨平台兼容性**:Berkeley DB可以在多种操作系统上运行,包括Unix、Linux、Windows和嵌入式系统,这增加了其应用范围和灵活性。 7. **开源**:Berkeley DB的部分版本是开源的,这使得开发者可以自由地研究、...
构建高可用性和可扩展性的应用程序:Berkeley DB 高可用性解决方案 在现代信息技术领域,构建高度可用且可扩展的应用程序已成为企业成功的关键因素之一。Berkeley DB 高可用性(BDB-HA)作为一款嵌入式数据管理系统...
6. **兼容性提升**:正如描述中所提及,Berkeley DB 4.8及以上版本与RHEL 6.5兼容,这意味着它们可以在该操作系统上稳定运行,为基于RHEL的应用程序提供数据库支持。 7. **安全性强化**:随着安全性的日益重要,...
- **20.9 如何操作BerkeleyDB的Records** - **记录操作**:说明如何在Berkeley DB中插入、更新和删除记录。 #### 21. 嵌入式据库系统BerkeleyDB - **21.1 前言** - **背景介绍**:概述Berkeley DB作为一款嵌入式...
对于初次接触Berkeley DB的开发者,"BerkeleyDB-Core-Cxx-GSG.pdf"这份文档是一个很好的起点。它详尽地介绍了如何在C++环境中配置、初始化Berkeley DB环境,以及如何使用C++接口进行数据操作。同时,它也涵盖了错误...
BerkeleyDB 就是一个典型的嵌入式数据库,它的轻量级特性使得它可以轻松地嵌入到各种应用程序中,包括操作系统、设备固件以及各种服务器应用。 **BerkeleyDB 的主要特点:** 1. **无模式设计** - 数据库中的每个...
**Java版BerkeleyDB 3.1.0详解** BerkeleyDB是一款由Oracle公司开发的开源、嵌入式数据库系统,特别适用于Java开发者。在Java-Edition-BerkeleyDB-3.1.0版本中,它提供了高效、可靠的数据存储解决方案,尤其适合于...
BerkeleyDB 多库联合操作 (Secondary Databases) - **3.1 二级数据库介绍** - **概念解释**:二级数据库是对主数据库的一个索引,用于提高查询效率。 - **应用场景**:快速查找、数据统计等。 - **3.2 创建二级...
标题中的"BerkeleyDB_java_jar包"指的是适用于Java开发的BerkeleyDB库的jar文件,这个jar包包含了运行和开发BerkeleyDB Java应用所需的类和方法。 描述中提到的"7.5.11版本"是BerkeleyDB的一个特定发行版,每个版本...
《BerkeleyDB Manual C/C++》是一份详尽的官方文档,主要针对使用C和C++语言进行数据库操作的开发者。BerkeleyDB是一款轻量级、高性能的关系型数据库管理系统,常用于嵌入式系统和分布式应用程序。这篇手册将深入...
- "db-4.3.29"指的是Berkeley DB数据库引擎的版本,OpenLDAP通常使用Berkeley DB作为其默认后端存储系统,用于存储目录数据。 - "openssl-0.9.8a"是指OpenSSL库的版本,OpenSSL是一个用于安全套接层(SSL/TLS)...
根据提供的文档信息,“BerkeleyDB-Core-JAVA-GSG.pdf”主要介绍了如何在Java环境中使用Berkeley DB。该文档强调了Berkeley DB作为一种文件类型数据库的优势,包括快速的存取速度和方便的操作特性。 #### 二、...
在QQ等即时通讯软件中,BerkeleyDB被用于存储本地聊天记录,展示了其在处理大量并发读写操作时的优秀性能和灵活性。 **嵌入式数据库** 是一种与应用程序紧密集成的数据存储解决方案,无需独立的服务器进程或网络...
4. **BerkeleyDB-Java-Collections.pdf**:对于Java开发者,此文档展示了如何使用BerkeleyDB与Java集合框架集成,提供了一种将数据库操作与Java编程无缝结合的方式。 5. **DBMessageTextReference.pdf**:这份文档...
在“BerkeleyDB-Core-Cxx-GSG.rar”这个压缩包中,包含的文件是“BerkeleyDB-Core-Cxx-GSG.pdf”,这很可能是Berkeley DB的C++接口的官方指南或开发者指南(Guide for Getting Started)。这份文档将深入介绍如何在...
Berkeley DB采用了键值对(Key-Value Store)的存储模型,用户通过键来查找和操作对应的值。这种模型简单直观,适合于大量的随机读写操作,且无需复杂的SQL查询语言。 **2. 文件格式** Berkeley DB的数据以文件形式...