首页 > 数据库 >Berkeley DB 开源的文件数据库

Berkeley DB 开源的文件数据库

来源:互联网 2026-04-29 11:26:09

开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储 光说概念可能有点抽象,咱们直接来看一个具体的例子。下面的代码片段是我从网上找到并经过本地验证的,能帮你快速理解它的基本操作。 package org; import ja va.io.File; import ja va.io.Un

开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储

Berkeley DB 开源的文件数据库

光说概念可能有点抽象,咱们直接来看一个具体的例子。下面的代码片段是我从网上找到并经过本地验证的,能帮你快速理解它的基本操作。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

package org;

import ja va.io.File;
import ja va.io.UnsupportedEncodingException;
import ja va.util.concurrent.TimeUnit;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.TransactionConfig;

public class BerkeleyDB {
    private Environment environment = null;//数据库环境
    private DatabaseConfig dbConfig = null;//数据库配置
    private Database database = null;//数据库对象
    private String fileName = "D:\\wzx";
    private String dbName = "wzx";

    public void openDatabase(){
        EnvironmentConfig envConfig = new EnvironmentConfig();
        envConfig.setAllowCreate(true);
        envConfig.setTransactional(true);
        envConfig.setReadOnly(false);
        envConfig.setTxnTimeout(10000, TimeUnit.MILLISECONDS);
        envConfig.setLockTimeout(10000, TimeUnit.MILLISECONDS);
        File file = new File(fileName);
        if(!file.exists()){
            file.mkdirs();
        }
        environment = new Environment(file, envConfig);
        dbConfig = new DatabaseConfig();
        dbConfig.setAllowCreate(true);
        dbConfig.setTransactional(true);
        dbConfig.setReadOnly(false);
        if(database == null)
            database = environment.openDatabase(null, dbName, dbConfig);
    }

    public boolean insert(String key, String value, boolean isOverWrite){
        try {
            DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
            DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));
            OperationStatus os = null;
            Transaction transaction = null;
            TransactionConfig txnConfig = new TransactionConfig();
            txnConfig.setSerializableIsolation(true);
            transaction = environment.beginTransaction(null, txnConfig);
            if(isOverWrite){
                os = database.put(transaction, theKey, theData);
            }else{
                os = database.putNoOverwrite(transaction, theKey, theData);
            }
            transaction.commit();
            if(os == OperationStatus.SUCCESS){
                return true;
            }else{
                return false;
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return false;
    }

    public String query(String key){
        try {
            DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
            DatabaseEntry theData = new DatabaseEntry();
            Transaction transaction = null;
            TransactionConfig txnConfig = new TransactionConfig();
            txnConfig.setSerializableIsolation(true);
            transaction = environment.beginTransaction(null, txnConfig);
            OperationStatus os = database.get(transaction, theKey, theData, LockMode.DEFAULT);
            transaction.commit();
            if(os == OperationStatus.SUCCESS){
                String value = new String(theData.getData(), "UTF-8");
                return value;
            }else{
                return "";
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public void close(){
        if(database != null){
            database.close();
        }
        if(environment != null){
            environment.cleanLog();
            environment.close();
        }
    }

    public static void main(String[] args) {
        BerkeleyDB berkeleyDb = new BerkeleyDB();
        berkeleyDb.openDatabase();
        /*berkeleyDb.insert("China", "北京", true);
        berkeleyDb.insert("US", "纽约", true);*/
        System.out.println(berkeleyDb.query("China"));
    }
}

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

相关攻略

更多

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。