1.Berkeley DB是一个嵌入式的数据库,它适合于管理海量的、简单的数据。关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础。每个key/value构成了一条记录,而整个数据库实际上就是由许多这样的结构单元构成的,使用其提供的API访问数据库时,只需要提供关键字就能访问到相应的数据。当然也可以在提供Key和部分Data来查询符合条件的相近数据。
2. NOSQL:bdb不支持SQL语言,它对数据的管理很简单,bdb数据库包含若干条记录,每条记录由关键字和数据(key-value)两部分构成。数据可以是简单的数据类型,也可以是复杂的数据类型.;
3.BDB可以分为几个子系统:
· 存储管理子系统 (Storage Subsystem)
· 内存池管理子系统 (Memory Pool Subsystem)
· 事务子系统 (Transaction Subsystem)
· 锁子系统 (Locking Subsystem)
· 日志子系统 (Logging Subsystem)
BerkeleydbDao
package newtest;
/**
* Berkeley DB interface of DAO
* */
public interface BerkeleydbDao<T> {
/**
* open database
* */
public void openConnection(String filePath, String databaseName);
/**
* 关闭数据库
* */
public void closeConnection();
/**
* insert
* */
public void save(String name, T t);
/**
* delete
* */
public void delete(String name);
/**
* update
* */
public void update(String name, T t);
/**
* select
* */
public T get(String name);
}
BerkeleydbDaoSortedMapImpl
package newtest;
import java.io.File;
import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.bind.serial.StoredClassCatalog;
import com.sleepycat.collections.StoredMap;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
/**
* 使用StoredMap实现
* */
public class BerkeleydbDaoSortedMapImpl<T> implements BerkeleydbDao<T> {
Environment env = null;
private Database database = null;
private StoredMap<String, T> storedMap = null;
private Class<T> persistentClass = null;
EntryBinding<String> keyBinding = null;
SerialBinding<T> valueBinding = null;
public BerkeleydbDaoSortedMapImpl(Class<T> persistentClass){
this.persistentClass = persistentClass;
}
public void openConnection(String filePath, String databaseName) {
File file = new File(filePath);
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
env = new Environment(file, envConfig);
DatabaseConfig databaseConfig = new DatabaseConfig();
databaseConfig.setAllowCreate(true);
databaseConfig.setTransactional(true);
database = env.openDatabase(null, databaseName, databaseConfig);
StoredClassCatalog catalog = new StoredClassCatalog(database);
keyBinding = new SerialBinding<String>(catalog, String.class);
valueBinding = new SerialBinding<T>(catalog, persistentClass);
storedMap = new StoredMap<String, T>(database, keyBinding, valueBinding, true);
}
public void closeConnection() {
if(database != null){
database.close();
if(env != null){
env.cleanLog();
env.close();
}
}
}
public void delete(String name) {
storedMap.remove(name);
}
public T get(String name) {
return storedMap.get(name);
}
public void save(String name, T t) {
storedMap.put(name, t);
}
public void update(String name, T t) {
save(name, t);
}
}
Test
import java.io.File;
import newtest.BerkeleydbDaoSortedMapImpl;
public class Test {
public static void main(String[] args) {
String dbEnv="C:/Users/zhuawa/Desktop/testdb/";
File f=new File(dbEnv);
if(!f.exists()){
f.mkdirs();
}
Person p=new Person();
p.setAge(1);
p.setName("李四");
BerkeleydbDaoSortedMapImpl ddb=new BerkeleydbDaoSortedMapImpl(null);
String a="test----";
ddb.openConnection(dbEnv, "mydb");
ddb.save("key1", a);
System.out.println(ddb.get("key1"));
ddb.openConnection(dbEnv, "mydb");
ddb.save("test2", p);
Person person = (Person)ddb.get("test");
System.out.println("Age:"+person.getAge()+"-----name:"+person.getName());
}
}
结果:
test----
Age:1-----name:李四