現在、私は非常に大きなデータセットに対して複数の情報検索と分類タスクを実行する必要があるJavaプロジェクトを作成しています。小さなコレクションには10Kのドキュメントがあります。各文書から、約150次元の2倍のベクトル。したがって、150メガバイトの150メガバイトまたは150メガバイトのベクトル。格納した後、それらのすべてをリコールするか、またはそれらのパーセンテージをリコールし、クラスタリング(例:KMEANS)を実行する必要があります。実際のコレクションにはさらに多くの文書があります(私は現在、200,000の文書を扱っています)。Javaで大きなデータセットを保存して検索する最良の方法
私はOutOfMemoryErrorを数回処理しましたが、この問題の最後の解決策は、合計サイズが5GBを超える10個の巨大なXMLファイルに格納することでした。 DOM Writerがメモリをいっぱいにしたので、ファイルは10でなければなりませんでした。読書のために、私はSAX Parserを使ってメモリにロードせずに仕事をしました。さらに、任意の種類のテキストにダブルを格納すると、実際のサイズが乗算され、解析と変換の計算コストが追加されます。最後に、クラスタリングアルゴリズムは通常反復的なものなので、何度も同じデータが必要になります。私の方法では何もキャッシュされませんでした。ディスクから何度も読み込みました。
私は現在、バイナリ形式(データベース、生のバイナリファイルなど)のデータを任意の量で格納するためのよりコンパクトな方法と、それを効率的に読み取る方法を探しています。誰もが提案するアイデアはありますか?
JDBM3は、より良い[て、mapdb](http://www.mapdb.org/)として知っている、JDBM4にアップグレードされました。 –