我需要一个非常基本的key-value存储为
java.我开始使用HashMap,但似乎HashMap有些空间无效(我正在存储大约2000万条记录,似乎需要〜6GB的RAM).
该映射是Map< Integer,String>等等,因此我正在考虑使用GNU Trove TIntObjectHashMap< byte []>,并将映射值作为ascii字节数组而不是String存储.
解决方法
使用
Berkeley DB.
Berkeley DB stores object graphs,objects in collections,or simple binary key/value data directly in an a btree on disk. This simple,highly efficient approach removes all the unnecessary overhead in ORM solutions. Using the Direct Persistence Layer (DPL) Java developers annotate classes with storage information,much like JPA. This approach is familiar,efficient,and fast. The DPL reduces the complexity of data storage while not sacrificing speed.
这绝对会给你带来巨大的记忆和速度,而不会增加你的应用程序的复杂性.请享用!