卷的数据库设计问题

时间:2013-06-21 18:58:21

标签: sql database database-design

我有一个非常通用的数据库问题。我在我的数据库中创建了一个表,用于跟踪整个网站的点击次数。我的表结构如下:

  • (PK) - ID,
  • (FK) - PageID,
  • (FK) - ContactID,
  • 日期

我遇到的问题是,对于大量用户设置和大量点击数据,此表中的行数在2000万到3000万之间。有没有不同的方法我可以组织这些数据,使按日期报告更容易?

SELECT P.TITLE, COUNT(DISTINCT(C.ID)) 
FROM PAGES P 
INNER JOIN CLICKS C ON C.PAGEID = P.PAGEID 
WHERE C.DATE >= 5/1/2013 AND C.DATE < 6/1/2013 AND C.PAGEID = XYZ

2 个答案:

答案 0 :(得分:2)

它被称为尺寸设计。

您可以使用像Pentaho Aggregation Designer这样的工具来查找适当的聚合(例如按月按客户点击)。

然后使用像Mondrian + Saiku这样的OLAP工具,它可以动态地重写您的查询,以便在有利时使用聚合。

您应该使用带有整数智能键†的日期维度表(如20130621)。这样可以轻松按日期对访问事实进行分区。

Pentaho Data Integration可以轻松划分表格。

†这是唯一一次在尺寸设计中使用智能钥匙。

答案 1 :(得分:1)

Oracle Partitions能够很好地处理这个要求。