/**
* 封装对Berkeley DB一般操作的抽象类
* **/
public abstract class AbstractFrontier {
private Environment env;
private static final String CLASS_CATALOG = "java_class_catalog";
protected StoredClassCatalog javaCatalog;
protected Database catalogdatabase;
protected Database database;
public AbstractFrontier(String homeDirectory) throws DatabaseException, FileNotFoundException {
EnvironmentConfig envConfig = new EnvironmentConfig(); // 打开env
envConfig.setTransactional(true);
envConfig.setAllowCreate(true);
env = new Environment(new File(homeDirectory), envConfig);
DatabaseConfig dbConfig = new DatabaseConfig(); // 设置DatabaseConfig
dbConfig.setTransactional(true);
dbConfig.setAllowCreate(true);
catalogdatabase = env.openDatabase(null, CLASS_CATALOG, dbConfig); // 打开
javaCatalog = new StoredClassCatalog(catalogdatabase);
database = env.openDatabase(null, "URL", dbConfig); // 打开
}
//关闭数据库,关闭环境
public void close() throws DatabaseException {
database.close();
javaCatalog.close();
env.close();
}
//put方法
protected abstract void put(Object key,Object value);
//get方法
protected abstract Object get(Object key);
//delete方法
protected abstract Object delete(Object key);
}
public class BDBFrontier extends AbstractFrontier {
@SuppressWarnings("unchecked")
private StoredMap pendingUrisDB = null;
//使用默认的路径和缓存大小构造函数
public BDBFrontier(String homeDirectory) throws DatabaseException, FileNotFoundException{
super(homeDirectory);
EntryBinding<String> keyBinding = new SerialBinding<String>(javaCatalog, String.class);
EntryBinding<String> valueBinding = new SerialBinding<String>(javaCatalog, String.class);
pendingUrisDB = new StoredMap<String, String>(database, keyBinding, valueBinding, true);
}
// 底层存入数据库
@SuppressWarnings("unchecked")
public void put(Object key, Object value) {
pendingUrisDB.put(key, value);
}
//取出
public Object get(Object key){
return pendingUrisDB.get(key);
}
//删除
public Object delete(Object key){
return pendingUrisDB.remove(key);
}
//是否包含key
public boolean containKey(Object key){
return pendingUrisDB.containsKey(key);
}
//得到keySet
@SuppressWarnings("unchecked")
public Set<String> getKeySet(){
return pendingUrisDB.keySet();
}
// 测试函数
public static void main(String[] strs) throws Exception {
BDBFrontier bDBFrontier = new BDBFrontier("E:\\BerkeleyDB");
for (int i = 0; i < 30; i++) {
bDBFrontier.put("www" + i, "http://" + i);
}
Set<String> set = bDBFrontier.getKeySet();
for (String Str : set) {
System.out.println(Str);
}
bDBFrontier.close();
}
}
分享到:
相关推荐
Oracle BerkeleyDB-JE je-6.0.11
**Berkeley DB JE 7.0.6:深入理解分布式数据存储** Berkeley DB JE(Java Edition)是Oracle公司提供的一款开源、嵌入式、基于Java的键值对数据库系统。它以其轻量级、高性能和高可用性而受到广泛的青睐,尤其适合...
Berkeley DB 提供了灵活的数据存储方式,支持多种数据访问方法,包括 B-树、哈希表、队列和记录编号访问等。这些访问方法的选择取决于具体的应用场景需求。 - **B-树**:适用于需要频繁查询和更新的数据集。 - **...
Berkeley DB je是其增强版,专为Java环境设计,提供了更高效的数据存储和管理能力。在Berkeley DB je3.3版中,我们看到了对性能、稳定性和功能的持续优化。 1. **嵌入式数据库** Berkeley DB je是一款嵌入式数据库...
- **键值对(Key-Value Pair)**:BerkeleyDB的基础数据模型,每个记录由一个唯一的键和对应的数据值组成。 - **数据库环境(Database Environment)**:管理和协调数据库的操作,包括内存池管理、事务处理和锁管理...
综上所述,"berkeley db je-6.4.9.gz"压缩包提供的BDB JE 6.4.9版本是一个强大且灵活的数据库解决方案,适用于多种需要高效、可靠数据存储的Java应用。开发者可以通过学习其API和特性,将其整合进自己的项目中,以...
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤,本文件是早期版本
Berkeley DB Java Edition (JE) 官方7.5.11下载版本。 相关介绍 https://blog.csdn.net/hadues/article/details/80854288
它详尽地介绍了如何在C++环境中配置、初始化Berkeley DB环境,以及如何使用C++接口进行数据操作。同时,它也涵盖了错误处理、备份与恢复、日志管理等关键话题,帮助开发者全面理解BDB的工作机制。 在实际应用中,...
3. **使用BerkeleyDB**:Scrapy-Deltafetch会利用BerkeleyDB的API,将抓取到的URL和数据存储为键值对,便于后续判断新旧和更新内容。 通过以上内容,我们了解了BerkeleyDB的核心特性和安装过程,以及它在Scrapy-...
- **Berkeley DB XML 支持**:Berkeley DB 支持使用 XQuery 进行数据查询和操作。 #### 5. Berkeley DB C++ 使用实例 - **5.1 初始化** - **环境准备**:配置开发环境,包括安装 Berkeley DB 库和开发工具。 - *...
Berkeley DB (BDB) 是一个高性能的嵌入式数据库系统,它以其高效的数据存储和检索能力而闻名。根据提供的文档信息,“BerkeleyDB-Core-JAVA-GSG.pdf”主要介绍了如何在Java环境中使用Berkeley DB。该文档强调了...
Oracle Berkeley DB是Oracle公司唯一的非关系型存储引擎,旨在满足那些需要快速本地存储而无需使用SQL进行数据访问的应用程序和设备的需求。由于Oracle Berkeley DB是非关系型的,它与Oracle的其他数据库产品有很大...
- **加密**:使用数据加密技术,保护存储在数据库中的信息不被非法获取。 - **审计日志**:启用审计功能,记录数据库的操作,便于追踪异常行为。 综上所述,Berkeley DB 4.8.30在Open LDAP中的作用不可忽视,它提供...
**Berkeley DB (BDB)** 是一款开源的、嵌入式数据库系统,由...通过详读并实践“BerkeleyDB-Core-Cxx-GSG.pdf”中的内容,开发者将能够熟练地在C++项目中集成和使用Berkeley DB,从而实现高效、可靠的数据存储和管理。
Berkeley DB是一款由Oracle公司开发的嵌入式数据库系统,被广泛应用于许多软件项目中,尤其是在需要快速、轻量级数据存储解决方案的场景下。它提供了键值对存储模式,适用于构建高性能的数据缓存和数据库应用程序。...
- **数据结构解释**:详细解释Berkeley DB中使用的三种数据结构及其特点。 - **20.8 一个新的BerkeleyDB java持久API** - **Java API**:介绍一个新的用于Berkeley DB的Java持久化API。 - **20.9 如何操作Berkeley...
Berkeley DB采用了键值对(Key-Value Store)的存储模型,用户通过键来查找和操作对应的值。这种模型简单直观,适合于大量的随机读写操作,且无需复杂的SQL查询语言。 **2. 文件格式** Berkeley DB的数据以文件形式...
Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作...