2009-06-02 17 views
0

大規模なWebクローラでURLキューを構築する方が良いです。リンクされたリストまたはBツリー?URLキューを構築する

答えて

1

キューを検索する必要がない場合(およびキューを一般的に検索する必要はない場合)、リンクされたリスト。

+0

はい私のキューは、プッシュとポップを持つスタックのように機能するはずです。しかし、何千ものURLを処理するので、私は非常に高速な実装が必要です。リンクされたリストでFIFOすることは可能ですか? – kar

+0

はい。先頭と末尾のポインタを使用する必要があります。尾部に挿入し、頭部から取り除く。 –

1

オーダーが重要な場合(およびキューがある場合)、リンクされたリスト。キューを検索する必要がある場合は、Bツリーをクリックします。

+0

検索はスタックのように機能しないので、重複しない認識リストが必要です。これには特別なリンクリストがありますか? – kar

1

大規模なクローラを構築する場合は、ほとんどの場合、おそらくRabbitMQというAMQPメッセージキューのようなものを使用したいと考えています。 RabbitMQ(および他の多くの同様のMQ)は、通常のインストールでは1秒間に100,000以上のトランザクションを処理します。私は自分自身のスパイダー/クローラーのセットアップでそれを使用し、それは魅力的に機能します。確かに、最初から似たようなものを作るよりもはるかに簡単です。

+0

ちなみに、最も進歩した高速メッセージキューは、ヘッドとテールの両方へのポインタとともに、内部的にリンクリストを使用します。キュー内の他の場所へのポインタを参照することもあります。本当にMQの機能セットに依存します。たとえば、AMQP 1.0では "リンク"の概念が定義され、リンクは独自のポインタをキューに保持する必要があります。 –

関連する問題