Например, какой двигатель? - PullRequest
1 голос
/ 24 октября 2010

а) У меня 1000000 доменных имен

б) Каждый домен имеет около 100000 сайтов

в) каждый сайт имеет около 10000 посещений в день / (5000 уникальных посещений в день)

d) Как владелец всех этих веб-сайтов, я хочу видеть, сколько посетителей на выбранных сайтах у меня было в выбранные периоды времени, например:

Сколько уникальных посетителей было с 4 декабря 1987 года по 23 апреля 2010 года на mydomain.com/tutorials

Сколько уникальных посетителей было с 30 августа 1996 г. по 16 июля 2009 г. на yourdomain.com/reference?

Для традиционной базы данных SQL это боль.

Какой самый умный подход? Какой механизм хранения использовать?

У меня есть только знания SQL. Любые дополнительные ресурсы с благодарностью.

Ответы [ 2 ]

1 голос
/ 24 октября 2010

С числами и потенциальными запросами, похожими на те, которые вы перечислили, я бы очень хотел, чтобы простая база данных SQL (PSQL / TSQL) отвечала вашим потребностям.Вместо этого вам потребуется некоторая форма обработки OLAP, например SSAS (службы анализа SQL Server) или аналогичное предложение от Oracle.

0 голосов
/ 24 октября 2010

Я думаю, что БД - лучший подход для этого варианта Вам просто нужно создать пару таблиц и распределить между ними данные, например ::100100

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

Надеюсь, это поможет.

...