在我的Java代碼,我使用番石榴的Multimap之(com.google.common.collect.Multimap)通過使用這樣的:問題與哈希映射空間
Multimap<Integer, Integer> Index = HashMultimap.create()
這裏,Multimap之關鍵是URL和值的某些部分是URL的另一部分(轉換爲整數)。現在,我分配我的JVM 2560 Mb(2.5 GB)堆空間(使用Xmx和Xms)。但是,它只能存儲9百萬個這樣的(鍵,值)整數對(約1000萬)。現在,問題是,我可以提供JVM只有有限的內存量(比如2 GB)。
因此,任何人可以幫助我,
1)有另一種方式或自制的解決方案來解決這個內存問題?意思是,基於磁盤/數據庫的多地圖可以是一個很好的解決方案?我從一些網絡文章中讀到,有一些基於DB/Disk的解決方案可以解決這個問題。 Berkley DB或Ehcache。任何人都可以通知我(或哪一個)更快?
2)那些基於磁盤/數據庫的多圖有性能問題(我要求存儲和搜索)?
3)任何想法或信息如何使用這些簡短。
4)其他任何想法對我都很好。
注意:我希望Multimap(鍵可以有多個值)解決方案,以解決上述問題。而且我還必須考慮存儲和搜索的性能。
請問你爲什麼要這樣做?對於很多項目,您可以使用簡單的關係數據庫,並在鍵列上配置索引。 – Groo 2012-03-29 18:54:58
@格羅,我有超過1億個關鍵值對。我想要一個很好的快速存儲和搜索方式。 – Arpssss 2012-03-29 18:57:28
僅供參考,我建議您的原始問題的答案可能會讓您繼續使用番石榴的'Multimap',同時減少空間開銷。 – 2012-03-29 19:33:27