第一篇:从0到1了解数据库——以MapDB为例

简介: 第一篇:从0到1了解数据库——以MapDB为例

1、MapDB使用

MapDB是一个基于(Apache 2.0 licensed)开源的Java嵌入式数据库引擎和集合框架。他支持针对Map,Set,Queues,Bitmaps 的范围查询,数据过期,压缩,堆外存储和流的操作。MapDB可能是Java最快的数据库,性能就像操作java中的集合一样。他也支持一些高级功能如:ACID事务,快照和增量备份等。

2.使用

<dependency>
      <groupId>org.mapdb</groupId>
      <artifactId>mapdb</artifactId>
      <version>3.0.7</version>
</dependency>

3.测试例子

(1)基于内存的: getMemoryDB 获取到的数据为空

    @Test
    public void putMemoryDB() {
        DB db = DBMaker.memoryDB().make();
        ConcurrentMap map = db.hashMap("map").createOrOpen();
        String key = "Hello";
        String val = "simple";
        map.put(key, val);
        System.out.println("第1次取值," + map.get(key));
    }
    @Test
    public void getMemoryDB() {
        DB db = DBMaker.memoryDB().make();
        ConcurrentMap map = db.hashMap("map").createOrOpen();
        String key = "Hello";
        System.out.println("第1次取值," + map.get(key));
    }

result:

putMemoryDB 第1次取值,simple
getMemoryDB 第1次取值,null

(2)基于磁盘:

    @Test
    public void putFileDB() {
        DB db = DBMaker.fileDB("d:/opt/file.db").make();
        ConcurrentMap map = db.hashMap("map").createOrOpen();
        map.put("something", "here");
        System.out.println("putFileDB:" + map.get("something"));
        db.close();
    }
    @Test
    public void getFileDB() {
        DB db = DBMaker.fileDB("d:/opt/file.db").make();
        ConcurrentMap map = db.hashMap("map").createOrOpen();
        System.out.println("getFileDB:" + map.get("something"));
        db.close();
    }

result:

putFileDB:here
getFileDB:here

(3)基于磁盘和内存:

    @Test
    public void putMemoryFileDB() {
        DB db = DBMaker
                .fileDB("d:/opt/file.db")
                .fileMmapEnable()
                .make();
        ConcurrentMap<String,String> map = db
                .hashMap("testMap", Serializer.STRING, Serializer.STRING)
                .createOrOpen();
        map.put("name", "xiaobai");
        db.close();
    }
    @Test
    public void getMemoryFileDB() {
        DB db = DBMaker
                .fileDB("d:/opt/file.db")
                .fileMmapEnable()
                .make();
        ConcurrentMap<String,String> map = db
                .hashMap("testMap", Serializer.STRING, Serializer.STRING)
                .createOrOpen();
        System.out.println("getMemoryFileDB:"+map.get("name"));
        db.close();
    }

4.MapDB文档

MapDB中文文档

MapDB - MapDB

5.MapDB性能测试

java 堆内存 map 和MapDB 对比


相关文章
|
存储 SQL 关系型数据库
数据库入门下篇(如何安装和登录MYSQL数据库)
数据库入门下篇(如何安装和登录MYSQL数据库)
188 0
|
5月前
|
SQL NoSQL Oracle
IT入门知识第四部分《数据库》(4/10)(二)
IT入门知识第四部分《数据库》(4/10)(二)
46 0
|
5月前
|
存储 SQL 关系型数据库
IT入门知识第四部分《数据库》(4/10)(一)
IT入门知识第四部分《数据库》(4/10)(一)
55 0
|
5月前
|
数据库
演示数据库
【7月更文挑战第17天】演示数据库。
28 5
|
6月前
|
SQL NoSQL 关系型数据库
数据库教程:从基础到进阶
数据库教程:从基础到进阶
|
存储 人工智能 关系型数据库
数据库入门上篇(数据库基础概念知识)
数据库入门上篇(数据库基础概念知识)
138 4
|
SQL 存储 安全
数据库视频第一章
数据库视频第一章
72 0
|
7月前
|
SQL 存储 安全
数据库基础的知识点
数据库基础的知识点
|
7月前
|
存储 数据可视化 关系型数据库
【MySQL进阶之路丨第六篇】数据库的创建、选择和删除
【MySQL进阶之路丨第六篇】数据库的创建、选择和删除
101 0
|
存储 SQL 关系型数据库
学习数据库第一章
学习数据库第一章