1

a) 我有 1000000 个域名

b) 每个域有大约 100000 个站点

c) 每个站点每天大约有 10000 次访问/(每天 5000 次独立访问)

d) 作为所有这些网站的所有者,我想查看在选定的时间段内我在选定的网站上有多少访问者,例如:

从 1987 年 12 月 4 日到 2010 年 4 月 23 日,mydomain.com/tutorials 上的唯一身份访问者有多少

从 1996 年 8 月 30 日到 2009 年 7 月 16 日,yourdomain.com/reference 上的唯一身份访问者有多少?

对于传统的 SQL 数据库来说,这是一种痛苦。

什么是最聪明的方法?使用什么存储引擎?

我只有 SQL 知识。非常感谢任何其他资源。

4

2 回答 2

1

与您列出的数字和潜在查询相似,我非常相信一个简单的 SQL (PSQL/TSQL) 数据库可以满足您的需求。相反,您需要某种形式的 OLAP 处理,如 SSAS(SQL Server 分析服务)或 Oracle 提供的类似产品。

于 2010-10-24T12:28:22.003 回答
0

我认为 DB 是此选项的最佳方法您只需要创建几个表并在它们之间传播数据,例如:

Table: Domains [id, name]
Table: Sites [id, domain_id, name]
Table: Visits [id, site_id, date]

所以你可以选择让说:

SELECT COUNT(v.id) 
FROM Visits AS v 
RIGHT JOIN Sites AS s
ON v.site_id = s.id
RIGHT JOIN Domains AS d
ON s.domain_id = d.id
WHERE d.name = 'mydomain.com' 
      AND s.name = 'tutorials' 
      AND v.date BETWEEN startDate AND endDate 

startDate 和 endDate 应该通过编程语言(PHP,ASP)传递,或者可以在 SELECT 中手动设置

希望有帮助。

于 2010-10-24T12:23:30.333 回答