MapDB:JVM堆Heap之外的磁盘存储数据库

14-03-09 banq
         

MapDB是一个可以持久化内存In-memory的数据库,可作为内存存储的后备,如果数据超过内存大小,可通过MapDB存储到磁盘上(不过很多缓存产品可以激活这个功能)

MapDB特点:

并发- MapDB 有记录级别锁,具有状态艺术化并发引擎,它的性能能在多核之间线性扩展,数据能够被并行多个线程写入。

快速 - MapDB 有类似原生数据库一样的性能。

ACID - MapDB可选支持ACID事务,使用完整的MVCC 隔离. MapDB 使用uses write-ahead-日志或append-only存储实现写冗余

灵活性 - MapDB能用在in-memory cache缓存到几TB数据库,易于配置。

Hackable易于被破解 - MapDB是基于组件,很多特性(实例缓存cache, 异步写, 压缩) 都是一组类. 易于加入新功能和组件。

类似SQL - MapDB有足够快的SQL引擎, 易于从关系数据库过渡:辅助索引/集合,自动增加的序列号,Join,触发器,组合键..

低磁盘使用率- MapDB有许多特点(序列号serialization, delta key packing…)等能够缩小磁盘使用,有更快的磁盘压缩。

MapDB配合SSD硬盘,也能够使用在快速处理大数据方面,如果你有一个大的数据集,不一定是“很大”如万亿,除了使用Hadoop等集群经典的方法来实现,可以考虑编写一个自定义的,优化的,基于内存的单机版本。反而更简单,更快捷。

参考:使用GraphChi 在单个笔记本上进行推荐系统运行