嵌入内存的NoSQL键值数据库MapDB,Java

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入内存的NoSQL键值数据库MapDB,Java相关的知识,希望对你有一定的参考价值。

嵌入内存的NoSQL键值数据库MapDB,Java

MapDB开源地址:

GitHub - jankotek/mapdb: MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine. - GitHub - jankotek/mapdb: MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.https://github.com/jankotek/mapdb

MapDB在maven的地址:

https://mvnrepository.com/artifact/org.mapdb/mapdbhttps://mvnrepository.com/artifact/org.mapdb/mapdb

MapDB用途多元化,MapDB提供拆箱即用的NoSQL键值数据存储模式。MapDB可以简单的基于内存、只在内存中内建数据库存储键值数据,当JVM关闭后所有数据自动消失。也可以将内存中的数据flush到本地一个文件中。总结起来,MapDB和一些常规的嵌入内存的NoSQL数据库相比,多出一个特点:不仅可以嵌入内存的数据存取,也能将内存数据flush到本地文件持久化。

下面一个例子,说明MapDB基于数据库文件存取内存数据.

pom.xml里面添加依赖:

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

Java代码:

import org.mapdb.DB;
import org.mapdb.DBMaker;
import org.mapdb.HTreeMap;
import org.mapdb.Serializer;

import java.util.concurrent.TimeUnit;

public class MainClass 
    final String KEY = "name";
    final String MAP = "map";

    public MainClass() 
        write();
        read();
    

    private void write() 
        DB db = DBMaker
                .fileDB("./myfile.db")
                .make();

        HTreeMap<String, String> map = db.hashMap(MAP)
                .keySerializer(Serializer.STRING)
                .valueSerializer(Serializer.STRING)
                .expireAfterCreate(30, TimeUnit.SECONDS)
                .createOrOpen();

        map.put(KEY, "zhangphil");
        System.out.println("write ok");
        System.out.println("-----");
        db.commit();

        db.close();
    

    private void read() 
        DB db = DBMaker
                .fileDB("./myfile.db")
                .make();

        HTreeMap<String, String> map = db.hashMap(MAP)
                .keySerializer(Serializer.STRING)
                .valueSerializer(Serializer.STRING)
                .expireAfterCreate(30, TimeUnit.SECONDS)
                .createOrOpen();

        System.out.println(map.isEmpty());
        System.out.println(map.get(KEY));

        db.close();
    


    public static void main(String[] atgs) 
        new MainClass();
    

代码运行后,在工程项目下生成一个数据库文件myfile.db:

输出:

write ok
-----
false
zhangphil

以上是关于嵌入内存的NoSQL键值数据库MapDB,Java的主要内容,如果未能解决你的问题,请参考以下文章

用 16G 内存存放 30亿数据(Java Map)转载

怎样在嵌入式产品中应用键值存储数据库

MapDB使用入门

MapDB 与常规数据库

我们不能用 RDBMS 模拟 nosql 键值对数据库吗

物联网11.物联网数据库 - NoSQL