3

特定のドメインのページが互いにどのようにリンクするかをモデル化できるように、Web サイトのリンク構造をグラフ化しようとしています。ルート ドメインにないサイトへのリンクをグラフ化していないことに注意してください。

明らかに、このグラフはかなりのサイズになる可能性があります。私が実行したい主なクエリの 1 つは、特定の URL に直接リンクしているページの数を数えることです。これをグラフ全体(身震い)に対して実行して、最終的にURLのリストとそのURLへの着信リンクの数を取得したいと思います。

これを行う一般的な方法の 1 つは、ある種のマップ削減によるものであることを知っています - そして、私はまだそのように行くかもしれません - しかし、私はこのレポートを (ほぼ) リアルタイムで表示できるようにする必要がありますが、これは通常マップではありませんフレンドリーを減らします。

私は、neo4j と OrientDb をざっと見てきました。これらは両方とも私が望む関係をモデル化できますが、それらを照会して必要なレポートを生成できるかどうかは明確ではありません。この時点で、私は特定のテクノロジーにコミットしていません。

どんな助けでも大歓迎です。ありがとう、ポール

4

4 に答える 4

3

OrientDBと Neo4Jの両方が、トラバーサル、カウントなどのグラフ操作を行うための共通 A​​PI としてブループリントをサポートしています。

あなたのユースケースをよく理解していれば、グラフは非常に単純に見えます.1つのタイプのエッジ「リンク」で互いにリンクする「URL」頂点があります。

グラフに対して操作を実行するには、Gremlinをご覧ください。

于 2011-08-04T05:12:23.947 に答える
1

structrを見たことがあるかもしれません。これは、 Neo4j上で実行されるオープン ソースの CMS であり、これらのタイプのページ間リンクを正確に備えています。

ページを指しているリンクの数を取得するには、現在のページノードの受信 LINKS_TO リンクを反復するだけです。

クエリのユースケースは何ですか? 人気のページリスト?では、上位 n ページのみが含まれますか? 次に、グラフのランダムな場所から開始して、着信 LINKS_TO リレーションシップを現在のノードに並行してトラバースし、それらを並べ替え構造に入れることを試みることができます。そのため、常に最初の 20 程度のトップページノードから開始/継続します。着信リンクの数が最も多い (終了するまで)。

Marko Rodriguez は、 Gremlinのドキュメントにいくつかの同様の「ページランク」の例を持っています。彼はまた、これについて語っているいくつかのブログ投稿を持っています。

于 2011-08-05T07:58:50.867 に答える
0

また、InfiniteGraph などのスケーラビリティの高いグラフ データベース製品も検討する必要があります。テクニカル サポートに電子メールを送信すると、ここで説明したことの大部分を実行するサンプル コードを教えてくれると思います。

于 2011-08-05T22:31:46.580 に答える
0

Neo4J では、グラフをサーバー間で分割して負荷を分散することはできません。データベースを複製して計算を分散することもできますが、更新は遅くなります (更新を複製する必要があるため)。ノードのプロパティとして新しいリレーションシップが追加されるたびに、各ノードへのインバウンドリンクの数を更新することで、この問題に対処します。Neo4J は優れた書き込み性能を備えています。もちろん、この情報を永続化する必要はありません。これは、直接的な関係を簡単に取得できるためです (イテレータだけですべての関連ノードのコレクションを取得することはできません)。

于 2011-08-03T23:17:03.920 に答える