Web分析SQL表设计

Web分析SQL表设计,sql,sql-server,database-design,analytics,Sql,Sql Server,Database Design,Analytics,我正在尝试为一些基本的网络分析设计表格(不使用谷歌分析) 我想记录:每页的浏览量、页面时间、浏览器、平台和国家 我的想法是创建以下表格,在每个页面中添加一行,然后增加值 页面:Id、页面、视图、TimeOnPage、BrowserId、PlatformId、CountryId 浏览器:Id、PageId、Chrome、Msie、Firefox、Safari、Opera、其他 平台:Id、PageId、Windows、OSX、Android、iOS、Linux、其他 计数器:Id,PageId[所

我正在尝试为一些基本的网络分析设计表格(不使用谷歌分析)

我想记录:每页的浏览量、页面时间、浏览器、平台和国家

我的想法是创建以下表格,在每个页面中添加一行,然后增加值

页面:Id、页面、视图、TimeOnPage、BrowserId、PlatformId、CountryId

浏览器:Id、PageId、Chrome、Msie、Firefox、Safari、Opera、其他

平台:Id、PageId、Windows、OSX、Android、iOS、Linux、其他

计数器:Id,PageId[所有国家/地区作为列]

这背后的想法是,如果有数千个页面视图,那么每个表每页只有一行。问题是如何将国家/地区字段添加到此数据中?如果遵循相同的设计,我需要一个包含195列的国家/地区表,每页添加一行,并增加与视图对应的国家/地区列。但这似乎不是一个好的设计,可能只有少量页面,但如果有数百页呢

另一种方法似乎是创建一个会话表

页面:Id,第页

会话:Id,PageId,TimeOnPage,BrowserId,PlatformId,CountryId

浏览器:Id,浏览器

平台:Id,平台

国家:Id,国家

但我担心随着时间的推移,会议桌的大小。 如果有几百个页面,假设是一个流行的站点,会话表可以快速增长。因此,最大Id范围成为一个问题。对Id列使用GUID是否更好?但是,如果会话表有这么多行,这看起来不是一个好的设计?
我不确定我的方向是否正确,或者最好的方法是什么?我们将非常感谢您提供一些指导。

通常的设计是维护每一页的记录,然后——可能的话——将它们聚合到会话中。这从参考表开始:

  • 页面
    :页面ID、URL。(每可能的页面一行)
  • 浏览器
    :浏览器ID、浏览器名称。(每个站台一排)
  • 平台
    :PlatformId,PlatformName。(每个站台一排)
  • 国家
    :国家ID、国家名称。(每个国家一行)
请注意,添加新页面、浏览器等并不重要。您只需向表中添加新行

那么你通常会:

  • 页面视图
    :页面视图、页面ID、浏览器ID、平台ID、国家ID、日期时间
也许:

  • SessionPages
    :SessionId,PageViewId
  • 会话:会话ID
会话的定义取决于业务需求(通常是站点的经验)


是的,数据会很大。这就是为什么要将其存储在数据库中。您将获得详细的数据,这样您就可以比预先总结的方法更详细地调查发生了什么。

谢谢。我将添加PageViews表,其中包含特定页面的每个视图的详细信息,然后在分析页面上聚合数据。考虑到页面浏览量(取决于页面数量、流行度和时间)可能包含数十亿行,实现这样一个表的最佳方式是什么。NoSql?蓝色桌子?分区表?索引?