0

ページのURLだけを収集し、それ以上は何も収集しないWebクローラーを作成することを検討しています(アーカイブプロジェクトの場合)が、結果を保存する適切な方法を見つけるのに問題があります。

要件は、使用されるストレージエンジンが何であれ、数十万のアイテムを処理できること(できれば、必須ではありませんが、各エントリにメタデータを追加する機能を備えていること)、および既存のアイテムを(重複を避けるために)無視できることです。パフォーマンスに大きな打撃を与えました。

私が見たエンジン:

  • MySQL:データベースが大きくなるにつれて、既存のアイテムのチェックが大幅に遅くなります。
  • SQLite:上記と同じ問題ですが、パフォーマンスがさらに低下します。
  • memcacheとRedis:データセットが十分に大きくなり、RAMストレージが実行不可能になる可能性があります。
  • MongoDB : Webサイトの説明に基づいて、データセットの大部分がディスクに保存されている場合にパフォーマンスが許容できるかどうかはわかりません。

MongoDBの適合性についてどう思いますか(MongoDBで大規模なデータセットを操作した経験がないため)、この目的のために存在するより優れた(無料の)ストレージエンジンを知っていますか?

4

2 に答える 2

1

従来のRDBMSを使用する場合は、データのハッシュに基づいて一意のキーを作成できます(たとえば、md5またはsha1でURLをハッシュします)。これにより、一意のキーが小さく保たれ、パフォーマンスが向上するはずです。

私はPostgreSQLが好きです-あなたはそれでいくつかのテストをしたいかもしれません。

編集:(コメントを参照)わかりました、多分この日と年齢でmd5を避けてください(:

于 2012-11-22T00:48:20.553 に答える
0

NoSQLソリューションがあなたにぴったりのように聞こえます。

特に、URLの「id」の下にさまざまな柔軟なデータをダンプしたいだけなので。

私はluceneを使用しましたが、mongoも良い選択です。

于 2012-11-22T01:01:51.650 に答える