2012-02-18 7 views
2

私はユーザーがデスクトップにインストールするJavaアプリケーションを作成しました。ウェブサイトをクロールし、各ページのデータをLinkedListに格納します。このアプリケーションでは、ユーザーはJTableでクロールされたすべてのページを表示できます。メモリ内のすべてのデータを保存する際のオプションの縮尺が変更されない

これは小さなサイトには効果的ですが、スケールがあまり大きくありません。現在、ユーザーはより多くのメモリを割り当てる必要があります(Javaを起動するときは-Xmxに変換されます)。

私の現在の考えは、おそらくHSQLDBのようなものを使ってデータベースにすべてのデータを格納することにあります。

私は考慮すべき他のアプローチはありますか?

+0

各サイト/ページに「通常の」(バイナリ?)ファイルを使用できます...リレーショナルアプローチは正しいことではないかもしれませんが、具体的な実装に依存します。 – home

+0

何ページを保存する必要がありますか、どれくらいの速さでダウンロードしていますか?どのようにそれらを照会するか、それらを検索する必要がありますか?可能な解決策はたくさんありますが、それはすべて依存しています... – DNA

答えて

0

リレーションDBはウェブページデータを保存するのには適していません。ディスクにページを保存できますか?私はあなたがクロールの結果を検索したいと思っています。 apache luceneの検索エンジンを試してみてください。すべての結果をオールインワンでメモリにロードすることは妥当ではありません。 JTableモデルにページを設定することができます。ページ参照時には、ソフトリファレンスを使用していくつかの結果をキャッシュします。

0

このケースでは、おそらくリレーショナルデータベースが適しています。理由:

  • メモリより大きいクロールを処理できるようになります。
  • 大量のページデータとは別のテーブルにリンクデータを保存すると、パフォーマンスや検索の視点からかなり重要なすべてのリンクをメモリに収めることができます。
  • あなたは、永続化の簡単な方法は、/標準技術これはかなりよく知られています
  • (場合には、これは将来的に必要とされている)のデータをクロール
  • 可能な優れたオープンソースのデータベースの実装(H2またはJavaDBは、おそらく私の最初の選択肢になりますがあります。それらは埋め込み可能であり、純粋なJavaで書かれている)
  • rel ational機能は、リンクデータに例のクエリのために、有用であることが判明でき
  • あなたはあなたが持っている
0

のNoSQL型ソリューションに向けてあなたをプッシュする可能性のあるデータボリュームや可用性の要件を持っているようですが、音はありません。基本的には4つのオプション:データベース

    1. ストアフラット・ファイルのデータ
    2. ストアデータは、どういうわけか「クラウド」へデータを送信する(私はどのようには考えている)
    3. むしろ「リッチより -
    4. はどういうわけか

    を必要なときに、あなたはまた、いくつかのスペースを得るために4の変形を行うことができ、完全な情報を再抽出することができますことを知って、データの必需品に至るまで、「削ります」 "オブジェクト構造は、個々のデータムを単一のStringまたはbyte []に​​、あるいは配列やarraylistとリンクリストの間に保持するように圧縮します。これにより、ストレージ要件が2倍以上になる可能性があります。あまり「オブジェクト指向」ではありませんが、時にはリアリティが介入することもあります。

  • 0

    オブジェクトデータベースdb4o http://community.versant.comにページデータを保存してみてください。オブジェクト・データベースは、リレーショナル・データベースよりも複雑なオブジェクト(例えば、兄弟の数が多い)を処理します。

    関連する問題