「建設的」ではないため、私の質問は閉じられるかもしれませんが、とにかく...私はすでに回答を検索しましたが、それらのほとんどは一般的すぎます。私の修士論文プロジェクトでは、大量 (つまり、数千) の Web ページをクロールし、それらを完全にデータベースに保存する必要があります。さまざまな方法でそれらを分析し、いくつかの機械学習アルゴリズムを試して、さまざまな方法で解析する必要があるため、これが必要です。現時点では、この目的のために SQlite データベースを使用しており、優先 Web フレームワークとして Django と組み合わせています。
単一の Web ページの HTML データ全体を Django に入れましたTextField
。つまり、Web ページごとにデータベース テーブルに個別の行があり、すべての Web ページのコンテンツがテーブルの 1 つの列に格納されます。現在の問題は、データのクエリと並べ替え、特にデータの反復処理が非常に遅いことです。これまでに約 1000 の Web ページをクロールしましたが、データベース ファイルのサイズはすでに 2 GB を超えています。さらに、4 GB の RAM がいっぱいになり、コンピューター (Macbook Pro mid-2009、Core2Duo 2.26 Ghz、500 GB HDD、OSX 10.8) が応答しなくなります。事前にキャッシュするアイテムの数を制限すると、クエリの数が増えるため、データの処理がさらに遅くなります。さらに多くのデータをクロールする必要があるため、現在のセットアップでは十分に拡張できません。
私の質問は次のとおりです。 データのクエリをより高速に実行できるように、HTML データをより効率的に保存するにはどうすればよいですか? MySQL や PostgreSQL などの別の RDBMS に切り替えることは理にかなっていますか? または、MongoDB などのドキュメント指向のデータベース システムをお勧めしますか? これまでのところ、SQlite の経験しかないので、実際に何を使用すればよいかわかりません。修士論文の締め切りが迫っているので、いろいろな設定を試す時間がありません。
あなたが私を助けるのを助けるために、ここにいくつかのさらなる要件があります:
- コンピューターのすべてのメモリを消費することなく、SQlite と比較して大きな HTML データのクエリのパフォーマンスが向上します (ワークロードを他のコンピューターに分散することはできません)。
- Django との多かれ少なかれ良好な統合
- これは研究作業のみであるため、実稼働環境では実行されず、私のコンピューターでのみ実行されます (おそらく私の教授のコンピューターでも実行されます)。
この膨大な量の可能性にどういうわけか迷っているので、どちらの方向に進むべきかを決めるのを手伝ってくれたらうれしいです. 事前にどうもありがとうございました!:)