2

ユーザーが登録する前に、Web サイトのどのページにアクセスするかを調べるために、データベースにクエリを実行できるようにしたいと考えています。

グラフ データベース (おそらく neo4j) を使用することを計画していましたが、データをどのように表現するかを決めることができません。

各ユーザーは ID を持っており、それぞれが独自の ID を持つ複数の訪問を行うことができます。明らかに、各ページはその URL によって識別され、タイムスタンプによって、ページが訪問された順序を判断できます。

では、「登録につながる最も一般的なパスは何か」という質問に答えることができるように、データベースを設計するにはどうすればよいでしょうか? ユーザーが登録ページにたどり着く前に、5 つのページを訪問したことを知りたいです。

URL ごとにノードを作成することもできますが、そうすると、何百万ものユーザー ID、訪問 ID、およびタイムスタンプを URL ノードのプロパティとして持つことになります。

別の方法として、訪問ごとに 1 つのグラフを作成することもできますが、そうすると、登録ページを表す 1 つのノードから始めて、そこから戻ることができなくなります。代わりに、すべてのグラフを反復処理し、登録ノードが含まれている場合にのみスキャンする必要があります。

URL とユーザーをノードとして保存した場合、サイト内のパスをどのように表すことができますか? 「ユーザー A が URL 1 にアクセスした」と簡単に言うことはできますが、その後、URL 2 にアクセスしたことを直感的に表現することはできません。

私はここでかなり困惑しています。すべてのデータはすでにリレーショナル DB にありますが、このサイトには月に数百万回のアクセスがあるため、このようなクエリを実行するとかなりの時間がかかると思います。

どうすればこれにアプローチできますか?neo4j は適切なソリューションですか?

ありがとう

4

1 に答える 1

2

Neo4j wikiのサイト使用状況分析ページでは、この問題に対する 1 つの考えられるアプローチについて説明しています。使用するグラフ構造は次のようになります: alt テキスト http://wiki.neo4j.org/images/f/f3/SiteUsage.png

于 2010-06-29T17:02:10.593 に答える