【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

MapDB:专为 Java 设计的高性能的数据库

  • 2014-07-21
  • 本文字数:976 字

    阅读完需:约 3 分钟

MapDB 是一个快速、易用的嵌入式 Java 数据库引擎,它提供了基于磁盘或者堆外(off-heap 允许Java 直接操作内存空间, 类似于C 的malloc 和free)存储的并发的Maps、Sets、Queues。MapDB 的前身是JDBM,已经有15 年的历史。MapDB 支持ACID 事务、MVCC 隔离,它的jar 包只有200KB,且无其它依赖,非常轻量。MapDB 目前的版本是1.0.5,相对来说功能已经稳定,并有全职的开发者支持开发。

MapDB 全部使用 Java 编写,支持 100GB 以上的数据存储,且性能可以与很多由 C 语言开发的数据库(谷歌的 Leveldb、甲骨文的 Berkeley DB)相媲美。它的主要特性如下:

  • 并发。MapDB 包含记录级别的锁和先进的并发控制引擎,它的性能可以在多核之间线性扩展,支持并发写。
  • 快速。MapDB 的性能可以与原生数据库相媲美,它经过多次的优化以及重写。
  • ACID 事务。支持 ACID 事务并实现了不同形式的 MVCC,MapDB 使用 write-ahead-log 或者 append-only 的方式来存储操作日志。
  • 灵活。MapDB 可以运行在内存缓存中,也可以支持 TB 级别的的数据库。它支持各种配置以满足不同的需求。
  • Hackable。很多特性(实例缓存 cache、异步写、压缩) 都是一组类, 易于加入新功能和组件。
  • SQL Like。MapDB 有非常快的 SQL 引擎,包含很多从关系型数据库移植过来的特性,比如辅助索引 / 集合、自增序列 ID、 连接、触发器、组合键。
  • 低磁盘使用率。MapDB 的能缩小磁盘的使用量,并且压缩以及序列化过程都非常快速。

MapDB 采用模块化的架构设计,非常容易扩展,每一个模块都可以被关掉,并且每个模块都可以有不同的设计,比如 MapDB 中有 5 种不同的缓存以及 3 种不同的存储模式。

CodeFutures 的 CEO Cory解释了 MapDB 所要解决的问题,“MapDB 为 Java 程序员提供了一种自然的方式来快速存储大对象,它可以精确匹配应用的需求。大部分应用都遇到过内存溢出或者很多的对象被装载到 JVM 而引起的过度垃圾回收的问题,很多时候这些问题是由于应用中有很多大的集合对象造成的。现在你可以使用 MapDB 来处理这些大的集合,且连 API 都不需要改。另外,MapDB 可以轻松的实现排序、遍历、事务。”

另外,结合 SSD 硬盘,MapDB 可以用于某些单节点的大数据场景。当数据集没有大到使用 Hadoop 处理时,可以考虑使用使用 MapDB 来编写基于内存的处理程序。

读者可以阅读官方指南来学习 MapDB,也可以关注作者的博客来了解关于 MapDB 的更多信息。

2014-07-21 05:5615099
用户头像

发布了 219 篇内容, 共 135.2 次阅读, 收获喜欢 190 次。

关注

评论

发布
暂无评论
发现更多内容

iOS底层面试题(上篇)

程序员 面试

程序员工资高,到底程序员的工资有多高?你不了解的程序员!

花费近一年时间整理的Android核心知识清单,面试篇

欢喜学安卓

android 程序员 面试 移动开发

语言特性实战(一)

南冥

HarmonyOS走进西安电子科技大学国际双创周

科技汇

程序员面试时自称字节跳动工作两年,被发现学历造假,结果蒙了!

Linux安装与常用命令

IT视界

Linux linux命令 Linux安装

SpringBoot中时间格式化的5种方法!

王磊

spring springboot

技术解码丨实时音视频与PSTN融合的解决方案

腾讯云音视频

腾讯云 音视频 PSTN

DEMO CHINA带着1000+投资人,500+好项目首登重庆

创业邦

创业 投资

海归硕士程序员吐槽:回国一个月都没找到工作,我书都白读了?

应聘高级Android工程师历程感言,你不懂还不学?

欢喜学安卓

android 程序员 面试 移动开发

Rancher × Apache APISIX:极速部署更好用的开源网关和 Ingress Controller

API7.ai 技术团队

Kubernetes 网关 rancher APISIX

关于程序猿的28个经典段子

程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬

融云技术分享:全面揭秘亿级IM消息的可靠投递机制

JackJiang

即时通讯 IM 可靠消息最终一致 融云

程序员是如何看待程序员的,程序员是做什么的?

从零开始学习3D可视化之演示项目

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化

程序员没两把刷子,就别送外卖了!!!

一萌妹子的面试经历,美团四面三小时,成功拿到Java岗offer

白亦杨

Java 编程 程序员 架构师 计算机

云原生时代,服务网格能给企业带来哪些价值?

行云创新

云原生 解决方案 服务网格

Linux文件查找常用命令-详细笔记

学神来啦

云计算 Linux 运维

大专的我,闭关56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

最壕58人逆天改命:四面阿里拿offer后,才发现师哥给的面试笔记有多强大

Java架构师迁哥

程序员崩溃的40个瞬间!最后一个是你意想不到的.....

阿里大佬的「算法界Offer收割机」火爆Github,一夜获上万star

Java 编程 程序员 架构师 计算机

直接裂开!京东二面被问SpringBoot整合MongoDB,我不会啊

Java架构没有996

Java mongodb 程序员 后端 JAVA开发

毕业总结

菲尼克斯

架构实战营

别人都在谈爱琴海,凭什么程序员就“地中海”网友:还是太优秀!

DataPipeline正式成为信创工委会会员单位!致力于为世界级用户提供更优质产品和服务

DataPipeline数见科技

大数据 数据融合 数据管理

「腾讯面试题」兔子试毒

MapDB:专为Java设计的高性能的数据库_DevOps & 平台工程_小盖_InfoQ精选文章