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,相對來講功能已經穩定,並有全職的開發者支持開發。html

MapDB所有使用Java編寫,支持100GB以上的數據存儲,且性能能夠與不少由C語言開發的數據庫(谷歌的Leveldb、甲骨文的Berkeley DB)相媲美。它的主要特性以下:java

  • 併發。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種不一樣的存儲模式。node

CodeFutures的CEO Cory解釋了MapDB所要解決的問題,「MapDB爲Java程序員提供了一種天然的方式來快速存儲大對象,它能夠精確匹配應用的需求。大部分應用都遇到過內存溢出或者不少的對象被裝載到JVM而引發的過分垃圾回收的問題,不少時候這些問題是因爲應用中有不少大的集合對象形成的。如今你可使用MapDB來處理這些大的集合,且連API都不須要改。另外,MapDB能夠輕鬆的實現排序、遍歷、事務。」程序員

另外,結合SSD硬盤,MapDB能夠用於某些單節點的大數據場景。當數據集沒有大到使用Hadoop處理時,能夠考慮使用使用MapDB來編寫基於內存的處理程序。數據庫


官網地址官網緩存

相關文章
相關標籤/搜索