/**
* 封装对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 jar包
BerkeleyDB-Core-C-GSG.pdf bdb c开发手册 英文版
berkeley db je-6.4.9.gz
文件类型的DB,存取速度快,操作方便,是以map方式key-value方式存取数据.兄弟大家共享!
Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作...
著名的嵌入式内存数据库Berkeley DB je3.3版,轻量级,快捷好用。
Berkeley DB4.8以上各版本,已经亲测过哪些版本可与redhat6.5兼容,见附件名称备注。
关于berkeley db 4.6.2的介绍性文章,是了解berkeley db的技术文档。
PerconaFT, PerconaFT是高性能的事务性 key-value 存储 PerconaFTPerconaFT是一个高性能。事务性的key-value 存储,用于Percona服务器和MySQL的TokuDB存储引擎,在TokuMX中。PerconaFT是作为一个共享库提供的,接口...
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤,本文件是早期版本
Berkeley DB Java Edition (JE) 官方7.5.11下载版本。 相关介绍 https://blog.csdn.net/hadues/article/details/80854288
Berkeley DB是一个嵌入式数据库,为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。 主要特点: 嵌入式:直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同...
使用BerkeleyDB数据库,java语言开发需要的jar包资源,7.5.11版本
有关嵌入式数据库berkeley db的参考资料
BerkeleyDB:BerkeleyDB-对Berkeley DB 2.x或更高版本的Perl5访问
Berkeley DB Java Edition JE 是一个完全用JAVA写的 它适合于管理海量的 简单的数据 能够高效率的处理1到1百万条记录 制约JE数据库的往往是硬件系统 而不是JE本身 多线程支持 JE使用超时的方式来处理线程间的死琐...
一组使用Berkeley DB JE的工具1. Hajo-一个简单的基于节俭的RPC接口,连接到Berkeley DB JE
db-6.1.26.tar.gz berkeley db
自己稍微封装了一下,可以当成简单的map来使用。