MapDB中文文档

介绍

MapDB是一个基于(Apache 2.0 licensed)开源的Java嵌入式数据库引擎和集合框架。他支持针对Map,Set,Queues,Bitmaps 的范围查询,数据过期,压缩,堆外存储和流的操作。MapDB可能是Java最快的数据库,性能就像操作java中的集合一样。他也支持一些高级功能如:ACID事务,快照和增量备份等。
本手册正在进行中,将与MapDB3.0版本一起完成。我希望你会发现它有用。如果你想为mapDB做贡献,我们很乐意接收。本手册中的示例代码都在github上。

快速开始

快速介绍

mapdb很灵活,有很多配置选项。但在大多数情况下,它只配置了几行代码。

获得

MapDB的maven仓库

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

你可以从这里获得最新的版本 https://mvnrepository.com/artifact/org.mapdb/mapdb
maven 3.0.7 日常的快照版本地址在这里

<repositories>
    <repository>
        <id>sonatype-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.mapdb</groupId>
        <artifactId>mapdb</artifactId>
        <version>VERSION</version>
    </dependency>
</dependencies>

你也可以直接下载mapDB的 jar文件
mapdb也可以依赖于eclipse、Guava、kotlin库和其他一些库。这里有它所有的版本

Hello World

以下是一个简单的示例。在内存中打开一个HashMap ,可以使用堆外存储,不受垃圾收集的限制。

//import org.mapdb.*
DB db = DBMaker.memoryDB().make();
ConcurrentMap map = db.hashMap("map").createOrOpen();
map.put("something", "here");

HashMap或者是其他的集合也可以存在在文件中。在这种情况下,可以再java重启时保存数据。这里必须使用DB.close() 来保护文件数据不被损坏。另一种方式是启用带有写日志的事务。

DB db = DBMaker.fileDB("file.db").make();
ConcurrentMap map = db.hashMap("map").createOrOpen();
map.put("something", "here");
db.close();

MapDB 默认是使用使用可序列化任何数据类型的泛型序列化。比使用专门的序列化程序要快,更节省内存。我们还可以在64位操作系统上启用更快的内存映射文件。

DB db = DBMaker
        .fileDB("file.db")
        .fileMmapEnable()
        .make();
ConcurrentMap<String,Long> map = db
        .hashMap("map", Serializer.STRING, Serializer.LONG)
        .createOrOpen();
map.put("something", 111L);

db.close();

快速提示

  • 在64位系统上,使用内存文件映射速度更快,性能更好。
  • mapdb有用于快速批量导入集合的pump。它比map.put()快得多.
  • 事务的开启会影响性能,但是没有他可能会存在文件数据损坏的情况。
  • 存储在mapdb中的数据(键和值)应该是不可变的,mapdb的对象序列化是在后台完成的

DB

DB 和 DBMaker

mapdb就像乐高一样,可以插拔。这里有两个类 DB和DBMaker来充当这样的角色。
DBMaker这个类来处理数据的配置,创建和开启。mapdb有多重模式和配置,大多都可以通过dbMaker来实现。
一个DB 实例表示一个打开的数据库(或者一个单一的事务会话)。它也可以用来创建或打开集合存储。也能够使用一些方法如: commit(),rollback(), close() 来处理数据库的生命周期 。
可以使用很多如DBMaker.fileDB() 类似这样的*DB的静态方法来打开或创建一个存储。MapDB有很多格式和模式。每一个xxxDB() 使用的不同的模式,比如说:memoryDB()在内存中使用的byte[]数组。appendFileDB() 使用的是append日志文件,等等。
一个xxxDB()方法后跟一个或多个配置选项,最后是一个make()方法,该方法应用所有选项,打开选定的存储并返回一个db对象。

DB db = DBMaker
        .fileDB("/some/file")
        //TODO encryption API
        //.encryptionEnable("password")
        .make();

打开和创建一个集合

一旦你有数据库,你可以打开一个集合或其他记录。数据库使用生成器样式配置。它从集合类型(hashmap,treeset…)和名称开始,然后应用配置,最后是操作指示器。
此示例打开(或创建)名为“example”的TreeSet

NavigableSet treeSet = db.treeSet("example").createOrOpen();

你也可以使用其他的配置方式

NavigableSet<String> treeSet = db
        .treeSet("treeSet")
        .maxNodeSize(112)
        .serializer(Serializer.STRING)
        .createOrOpen();

这里有三种不同的创建方法:

  • create() 创建
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值