`
cesul
  • 浏览: 31676 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用Berkeley DB (JE)存储key-value数据

 
阅读更多
/**
 * 封装对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();
    }
}
分享到:
评论

相关推荐

    BerkeleyDB-JE je-6.0.11

    Oracle BerkeleyDB-JE je-6.0.11

    Berkeley DB JE-7.0.6

    **Berkeley DB JE 7.0.6:深入理解分布式数据存储** Berkeley DB JE(Java Edition)是Oracle公司提供的一款开源、嵌入式、基于Java的键值对数据库系统。它以其轻量级、高性能和高可用性而受到广泛的青睐,尤其适合...

    BerkeleyDB-Core-C-GSG.pdf

    Berkeley DB 提供了灵活的数据存储方式,支持多种数据访问方法,包括 B-树、哈希表、队列和记录编号访问等。这些访问方法的选择取决于具体的应用场景需求。 - **B-树**:适用于需要频繁查询和更新的数据集。 - **...

    Berkeley DB je3.3版

    Berkeley DB je是其增强版,专为Java环境设计,提供了更高效的数据存储和管理能力。在Berkeley DB je3.3版中,我们看到了对性能、稳定性和功能的持续优化。 1. **嵌入式数据库** Berkeley DB je是一款嵌入式数据库...

    BerkeleyDB_java_jar包

    - **键值对(Key-Value Pair)**:BerkeleyDB的基础数据模型,每个记录由一个唯一的键和对应的数据值组成。 - **数据库环境(Database Environment)**:管理和协调数据库的操作,包括内存池管理、事务处理和锁管理...

    berkeley db je-6.4.9.gz

    综上所述,"berkeley db je-6.4.9.gz"压缩包提供的BDB JE 6.4.9版本是一个强大且灵活的数据库解决方案,适用于多种需要高效、可靠数据存储的Java应用。开发者可以通过学习其API和特性,将其整合进自己的项目中,以...

    db-4.7.25-master_db-4.7.25-master_berkeleydbvxworks_BerkeleyDB_源

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

    Berkeley DB Java Edition (JE)

    Berkeley DB Java Edition (JE) 官方7.5.11下载版本。 相关介绍 https://blog.csdn.net/hadues/article/details/80854288

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

    它详尽地介绍了如何在C++环境中配置、初始化Berkeley DB环境,以及如何使用C++接口进行数据操作。同时,它也涵盖了错误处理、备份与恢复、日志管理等关键话题,帮助开发者全面理解BDB的工作机制。 在实际应用中,...

    BerkerleyDb-18.1.40.tar.gz

    3. **使用BerkeleyDB**:Scrapy-Deltafetch会利用BerkeleyDB的API,将抓取到的URL和数据存储为键值对,便于后续判断新旧和更新内容。 通过以上内容,我们了解了BerkeleyDB的核心特性和安装过程,以及它在Scrapy-...

    Berkeley DB参考资料

    - **Berkeley DB XML 支持**:Berkeley DB 支持使用 XQuery 进行数据查询和操作。 #### 5. Berkeley DB C++ 使用实例 - **5.1 初始化** - **环境准备**:配置开发环境,包括安装 Berkeley DB 库和开发工具。 - *...

    BerkeleyDB-Core-JAVA-GSG.pdf

    Berkeley DB (BDB) 是一个高性能的嵌入式数据库系统,它以其高效的数据存储和检索能力而闻名。根据提供的文档信息,“BerkeleyDB-Core-JAVA-GSG.pdf”主要介绍了如何在Java环境中使用Berkeley DB。该文档强调了...

    berkeley-db-v-relational-066565

    Oracle Berkeley DB是Oracle公司唯一的非关系型存储引擎,旨在满足那些需要快速本地存储而无需使用SQL进行数据访问的应用程序和设备的需求。由于Oracle Berkeley DB是非关系型的,它与Oracle的其他数据库产品有很大...

    Berkeley DB 4.8.30

    - **加密**:使用数据加密技术,保护存储在数据库中的信息不被非法获取。 - **审计日志**:启用审计功能,记录数据库的操作,便于追踪异常行为。 综上所述,Berkeley DB 4.8.30在Open LDAP中的作用不可忽视,它提供...

    BerkeleyDB-Core-Cxx-GSG.rar

    **Berkeley DB (BDB)** 是一款开源的、嵌入式数据库系统,由...通过详读并实践“BerkeleyDB-Core-Cxx-GSG.pdf”中的内容,开发者将能够熟练地在C++项目中集成和使用Berkeley DB,从而实现高效、可靠的数据存储和管理。

    Berkeley DB4.8以上各版本

    Berkeley DB是一款由Oracle公司开发的嵌入式数据库系统,被广泛应用于许多软件项目中,尤其是在需要快速、轻量级数据存储解决方案的场景下。它提供了键值对存储模式,适用于构建高性能的数据缓存和数据库应用程序。...

    Berkeley DB参考手册PDF版本

    - **数据结构解释**:详细解释Berkeley DB中使用的三种数据结构及其特点。 - **20.8 一个新的BerkeleyDB java持久API** - **Java API**:介绍一个新的用于Berkeley DB的Java持久化API。 - **20.9 如何操作Berkeley...

    Berkeley DB数据库最新版

    Berkeley DB采用了键值对(Key-Value Store)的存储模型,用户通过键来查找和操作对应的值。这种模型简单直观,适合于大量的随机读写操作,且无需复杂的SQL查询语言。 **2. 文件格式** Berkeley DB的数据以文件形式...

    java berkeley-db demo

    Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作...

Global site tag (gtag.js) - Google Analytics