我希望能够查询数据库,以便在注册之前找出用户访问的网站上的哪些页面。
我打算使用图形数据库 - 可能是neo4j - 但我无法决定如何表示数据。
每个用户都有一个ID,可以进行多次访问,每次访问都有自己的ID。显然,每个页面都由其URL标识,时间戳允许我确定访问页面的顺序。
那么,我怎样才能设计数据库,以便回答“导致注册的最常见路径是什么”?我想知道用户在登录页面之前访问的5个页面。
我可以为每个网址创建节点,但之后我会在网址节点上拥有数百万个用户ID,访问ID和时间戳作为属性。
或者,我可以为每次访问创建一个图表,但之后我将无法从代表注册页面的单个节点开始并从那里开始工作。相反,我必须遍历所有图形,只有在它们包含注册节点时才扫描它们。
如果我将URL和用户存储为节点,我如何表示网站中的路径?我可以很容易地说“用户A访问过网址1”,但之后无法表示他们以直观的方式访问了网址2。
我在这里很难过。所有数据都已存在于关系数据库中,但我认为这样的查询会导致其停顿一段时间,因为该网站每月访问次数达数百万次。
我该如何处理? neo4j甚至是正确的解决方案吗?
由于
答案 0 :(得分:2)
Neo4j wiki上的Site usage analytics页面介绍了解决此问题的一种可能方法。它使用的图形结构如下所示: alt text http://wiki.neo4j.org/images/f/f3/SiteUsage.png