Berkeley DB

本文介绍了Berkeley DB作为一个嵌入式数据库在管理海量数据方面的优势。它采用键值对存储,并以B+树实现。在Java项目中,Berkeley DB通过Environment对象管理数据库,操作步骤包括创建环境、打开数据库、存储序列化类型、访问结果容器以及关闭资源。在爬虫项目中,作者利用Berkeley DB保存未访问的URL,通过整数主键模拟队列,使用StoredMap和StoredSortedMap进行存储。
摘要由CSDN通过智能技术生成

Berkeley DB 是一个嵌入式数据库,它适合于管理海量的(256T)、简单的数据。BDB是以键值对(value/key)来存储和管理数据库的。键可以重复,数据值可以是任意类型的。BDB的底层是用B+树或者其他算法实现的。我用的jar包是B+树实现的版本。

Berkeley DB是用Environment对象来管理数据库,一个Environment可以管理多个database。每个database都存储键值对,而序列化到磁盘上是通过catalog实现的。BDB的操作是在内存和磁盘上的,最终BDB的存取结果集在程序中使用是通过容器实现的(数据库在程序中的视图)。

所以BDB的使用分为5步:

  • 创建Environment
    //Open Environment
    private Environment environment;
    //同EnvironmentConfig来配置环境
    EnvironmentConfig environmentConfig=new EnvironmentConfig();
    environmentConfig.setTransactional(true);
    environmentConfig.setAllowCreate(true);
    //homeDirectory是数据库存放的目录
    environment=new Environment(new File(homeDirectory),environmentConfig);
  • 打开database和catalog
    protected StoredClassCatalog catalog;//catalog
    protected Database database;//database
    private static final String CLASS_CATALOG="java_class_catalog";//数据库名
    protected Database catalogDatabase;//catalog存放处

    //open Database
    DatabaseConfig dbConfig=new DatabaseConfig();//数据库配置
    dbConfig.setTransactional(true);
    catalogDBConfig.setAllowCreate(true);
    dbConfig.setSortedDuplicates(false);//不存重复键值
    database=environment.openDatabase(null, "URL", dbConfig);//存放实际数据的数据库   

    //Open Catalog
    DatabaseConfig catalogDBConfig=new DatabaseConfig();//数据库配置
    catalogDBConfig.setTransactional(true);
    catalogDBConfig.setAllowCreate(true);
    catalogDatabase=environment.openDatabase(null, CLASS_CATALOG, catalogDBConfig);
    //用StoredClassCatalog类将catalog保存在db中并返回可操作对象。
    catalog=new
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值