• 「JAVA」:Berkeley DB的JAVA连接


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

      Berkeley DB底层实现采用B树,可以看成能够存储大量数据的HashMap。Berkeley DB是通过环境对象EnvironmentConfig来对数据库进行管理的,每个EnvironmentConfig对象可以管理多个数据库,建立一个新的EnvironmentConfig的代码如下:

    1 EnvironmentConfig envConfig = new EnviromentConfig();
    2 envConfig.setTransactional(false);
    3 envConfig.setAllowCreate(true);
    4 exampleEnv = new Environment(envDir, envConfig);

      其中,envDir是用户指定的一个目录,只要是同一个EnvironmentConfig指定的数据库文件和日志文件,都会放在这个目录下。EnvironmentConfig也是一种资源,当使用完毕后,应该释放掉。

    1 exampleEnv.sync();
    2 exampleEnv.close();
    3 exampleEny = null;

      创建好环境之后,就可以用它创建数据库了。用Berkeley DB创建数据库时,需要指定数据库的属性,就好比在Orcal中创建数据库里要指定java_pool、buffer_size等属性一样。Berkeley DB使用DatabaseConfig来管理一个具体的Database。

     1 String databaseName = "ToDoTastList.db";
     2 DatabaseConfig dbConfig = new DataBaseConfig();
     3 dbConfig.setAllowCreate(true);
     4 dbConfig.setTransactional(false);
     5 
     6 dbConfig.setSortedDuplicates(false);
     7 Database myClassDb = exampleEnv.openDatabase(null, "classDb", dbconfig);
     8 catalog = new StoreClassCatalog(myClassDb);
     9 TupleBinding keyBinding = TupleBinding.getPrimitiveBinding(String.class);
    10 serialBinding valueBinding = new SerialBinding(catalog, NewsSource.class);
    11 store = exampleEnv.openDatabase(null, databaseName, dbConfig);

      当数据库建立起来之后,就要确定往数据库里存储的数据类型,Berkeley DB数据类型是采用EntryBinding来确定的。

    1 EntryBinding keyBinding = new SerialBinding(javaCatalog, String.class);

      其中,SerialBinding表示这个对象能够序列化到磁盘上,因此,构造函数的第二个参数一定要是实现了序列化接口的对象。

      最后,创建一个以Berkeley DB为底层数据结构的Map:

    1 this.map = new StoredSortedMap(store, keyBinding, valueBinding, true);
  • 相关阅读:
    mode
    Jmeter获取不到cookie(备注:前面和后面的几个步骤都可以获取到cookie)
    [BAT]批处理脚本双击可运行,但在定时计划任务中无法执行(当前工作路径不对导致的)
    匹配数字、字母和?%&=-_这几个符号的正则表达式
    在jmeter的beanshell中用java获取系统当前时间
    Jmeter中正则表达式不区分大小写进行匹配
    通过BeanShell获取UUID并将参数传递给Jmeter
    JAVA Get UUID
    Jmeter报文体包含过大附件导致请求报文发送失败的解决办法
    [BAT]操作系统定时任务调用批处理忽略error继续运行的方法
  • 原文地址:https://www.cnblogs.com/sangoly/p/3571716.html
Copyright © 2020-2023  润新知