MapDB:專為Java設計的高性能的數據庫
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的更多信息。
來自: http://www.infoq.com/cn/news/2014/07/mapdb-java