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:专为Java设计的高性能的数据库的更多相关文章

  1. Java Web 前端高性能优化(二)

    一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一)) 本次我们主要从图像BASE64 编码.GZIP压缩.懒加载与预加载以及 OneAP ...

  2. WeUI首页、文档和下载 - 专为微信设计的 UI 库 - 开源中国社区

    Download Bitnami Review Board Stack click here WeUI首页.文档和下载 - 专为微信设计的 UI 库 - 开源中国社区

  3. MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具

      MySQL  Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL  Workbench设计和创建新的数据库 ...

  4. Swing 是一个为Java设计的GUI工具包

    Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...

  5. 使用Java设计验证码生成程序

    我们来设计一个简单的验证码生成程序:验证码一个由4位的数字.字母随机组合而成图像,为了避免被光学字元识别(OCR,Optical Character Recognition)之类的程序识别出图片中的数 ...

  6. 去掉google play专为手机设计标识

    google play上的应用默认都会有个“专为手机设计”的标识 有时应用明明已经针对平板作了优化,但为什么这个标识还在呢,如何去掉这个标识呢,其实只需要两个步骤就好了: 1. 标记为支持高分辨率 & ...

  7. 哈希表hashTable的Java设计

    1:哈希表的概念 2:设计原理 3:哈希表的Java设计

  8. Android高性能ORM数据库DBFlow入门

    DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点.同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后.基于注解,使用 ...

  9. java程序设计课期中考试——数据库的增删改查和简单的js界面

    首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他 ...

随机推荐

  1. Ftp协议Socket实现

    原来用WebRequest来传输文件,被人鄙视了.就弄个Socket版的,支持Active,Passive模式. 带事件日志,有时间的人可以拿去做C#版的flashfxp. public class ...

  2. M0、M1、M2、M3都是用来反映货币供应量的重要指标

    m2-反映货币供应量的重要指标编辑词条m2广义货币是一个经济学概念,和狭义货币相对应,货币供给的一种形式或口径,以M2来表示,其计算方法是交易货币(M1,即社会流通货币总量加上活期存款)以及定期存款与 ...

  3. 2015.9.11模拟赛 codevs 4160【会玩的】

    题目描述 Description hzwer真的很会玩啊…他有一个n*m的方格,每次可以给方格添加一整行或一整列,但是不能删除.现在他想要让总格子数超过k个,但是又想让总格子数尽可能小.请找出这时的n ...

  4. poj2114 Boatherds

    Description Boatherds Inc. is a sailing company operating in the country of Trabantustan and offerin ...

  5. poj3177 Redundant Paths

    Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numb ...

  6. Java学习笔记(1)——基本数据类型

    一.进制转换 10^n被称为权  10称为基数   计算机中正数和负数的关系是取反加一, 如: ~3+1=-3 补码边界运算有溢出风险 32位二进制补码最多表示2^32个数, -2G~2G 1,计算机 ...

  7. JSP入门:介绍什么是JSP和Servlet(转)

    转自:http://developer.51cto.com/art/200907/134506.htm JSP入门:什么是jsp? JSP(Java Server Pages)是由Sun Micros ...

  8. mongoose--------ORM数据操作框架

    数据关系映射:ORM O:object R:relation M:mapping 把对数据库的操作都封装到对象中,操作了对象,就相当于操作了数据库. 安装: npm install mongoose ...

  9. C++编程规范之12:懂得何时和如何进行并发性编程

    摘要: 如果应用程序使用了多个线程或者进程,应该知道如何尽量减少共享对象,以及如何安全地共享必须共享的对象. 在多线程和并发编程中最重要的是要避免死锁.活锁和恶性的竞争条件. 在编写多线程程序时要注意 ...

  10. Loadrunner结果分析Graphs

    Transactions(用户事务分析)----用户事务分析是站在用户角度进行的基础性能分析. Transation Sunmmary(事务综述)----对事务进行综合分析是性能分析的第一步,通过分析 ...