我需要一個支持磁盤的Map結構以用於Java應用程序。它必須具備以下條件:推薦一個快速且可擴展的持久性地圖 - Java
- 可存儲數百萬條記錄(甚至數十億)
- 快速查找 - 在地圖上的大多數操作只會看是否有鍵已經存在。這和上面的1是最重要的標準。對於經常使用的密鑰應該有一個有效的內存緩存機制。
- 持久性,但不需要是事務性的,可以承受一定的失敗。即高興地定期與磁盤同步,並且不需要是事務性的。
- 能夠存儲簡單的原始類型 - 但我不需要存儲序列化的對象。
- 它不需要分配,即將在一臺機器上運行。
- 簡單設置&免費使用。
- 沒有關係查詢所需
記錄鍵將字符串或多頭。如上所述,讀取將比寫入更頻繁,並且大部分讀取將僅僅是檢查密鑰是否存在(即,不需要讀取密鑰相關數據)。每條記錄只會更新一次,記錄不會被刪除。
我目前使用Bdb的JE,但我正在尋求其他的選擇。
更新
以來通過減少在第二個鍵的依賴在我現有的BDB設置提高查詢性能。有些查詢需要在兩個輔助鍵上進行連接,通過將它們組合成一個組合鍵,我在查找中刪除了一個間接級別,這可以很好地加快速度。
我正在考慮的一個選擇是改變我使用現有BDB實施的方式。目前,我的所有記錄都有一個大型數據庫。然而,我應該能夠將數據分成多個集合並且每個集合有一個數據庫 - 如果我知道在任何時候我只需要訪問某些集合,那麼我可以保持關閉那些我不使用的集合,這應該有助於bdb爲我更高效地管理數據。 – Joel 2009-10-08 12:44:08
我已經使用bdb je。根據您的標準,這非常合適。然而,我對它的脆弱性感到非常失望,並且不推薦將它用於生產用途。 java進程中的任何打嗝導致bdb子系統需要重啓,blech! – james 2009-10-08 15:24:21
我不確定你的意思是BDB JE的「脆弱性」。 BDB JE可擴展到數TB的數據,並且我一直在生產系統中使用它。這是一個非常棒的技術。 – jasonmp85 2010-05-30 23:56:30