Berkeley DB 增删改查

1.Berkeley DB是一个嵌入式的数据库,它适合于管理海量的、简单的数据。关键字/数据(key/value)Berkeley DB用来进行数据管理的基础。每个key/value构成了一条记录,而整个数据库实际上就是由许多这样的结构单元构成的,使用其提供的API访问数据库时,只需要提供关键字就能访问到相应的数据。当然也可以在提供Key和部分Data来查询符合条件的相近数据。

 

2. NOSQLbdb不支持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 {

    /**
     * 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 implements BerkeleydbDao {

    Environment env = null;
    private Database database = null;
    private StoredMap storedMap = null;
    private Class persistentClass = null;

    EntryBinding keyBinding = null;
    SerialBinding valueBinding = null;

    public BerkeleydbDaoSortedMapImpl(Class 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(catalog, String.class);
        valueBinding = new SerialBinding(catalog, persistentClass);
        storedMap = new StoredMap(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:李四

你可能感兴趣的:(Berkeley DB 增删改查)