2

我希望能够查询数据库,以便在注册之前找出用户访问了网站上的哪些页面。

我正计划使用图形数据库——可能是 neo4j——但我无法决定如何表示数据。

每个用户都有一个 ID,可以进行多次访问,每个用户都有自己的 ID。显然,每个页面都由其 URL 标识,时间戳允许我确定访问页面的顺序。

那么,我该如何设计数据库,以便回答“导致注册的最常见路径是什么”这个问题?我想知道用户在进入我们的注册页面之前访问的 5 个页面。

我可以为每个 url 创建节点,但是我将拥有数百万个用户 ID、访问 ID 和时间戳作为 url 节点上的属性。

或者,我可以在每次访问时创建一个图表,但是我将无法从代表注册页面的单个节点开始并从那里返回。相反,我必须遍历所有图表,并且只有在它们包含注册节点时才扫描它们。

如果我将 URL 和用户存储为节点,我如何表示通过站点的路径?我可以轻松地说“用户 A 访问了 URL 1”,但无法表示在那之后他们以直观的方式访问了 URL 2。

我在这里很困惑。所有数据都已经在关系数据库中,但我认为这样的查询会在相当长的一段时间内降低它,因为该网站每月有几百万次访问。

我该如何处理?neo4j 甚至是正确的解决方案吗?

谢谢

4

1 回答 1

2

Neo4j wiki 上的站点使用分析页面描述了解决此问题的一种可能方法。它使用的图形结构如下所示: alt text http://wiki.neo4j.org/images/f/f3/SiteUsage.png

于 2010-06-29T17:02:10.593 回答