MapDB:專為Java設計的高性能的數據庫

jopen 10年前發布 | 16K 次閱讀 MapDB

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!