ユーザーが登録する前に、Web サイトのどのページにアクセスするかを調べるために、データベースにクエリを実行できるようにしたいと考えています。
グラフ データベース (おそらく neo4j) を使用することを計画していましたが、データをどのように表現するかを決めることができません。
各ユーザーは ID を持っており、それぞれが独自の ID を持つ複数の訪問を行うことができます。明らかに、各ページはその URL によって識別され、タイムスタンプによって、ページが訪問された順序を判断できます。
では、「登録につながる最も一般的なパスは何か」という質問に答えることができるように、データベースを設計するにはどうすればよいでしょうか? ユーザーが登録ページにたどり着く前に、5 つのページを訪問したことを知りたいです。
URL ごとにノードを作成することもできますが、そうすると、何百万ものユーザー ID、訪問 ID、およびタイムスタンプを URL ノードのプロパティとして持つことになります。
別の方法として、訪問ごとに 1 つのグラフを作成することもできますが、そうすると、登録ページを表す 1 つのノードから始めて、そこから戻ることができなくなります。代わりに、すべてのグラフを反復処理し、登録ノードが含まれている場合にのみスキャンする必要があります。
URL とユーザーをノードとして保存した場合、サイト内のパスをどのように表すことができますか? 「ユーザー A が URL 1 にアクセスした」と簡単に言うことはできますが、その後、URL 2 にアクセスしたことを直感的に表現することはできません。
私はここでかなり困惑しています。すべてのデータはすでにリレーショナル DB にありますが、このサイトには月に数百万回のアクセスがあるため、このようなクエリを実行するとかなりの時間がかかると思います。
どうすればこれにアプローチできますか?neo4j は適切なソリューションですか?
ありがとう