Например, какой двигатель?
А) у меня есть 1000000 доменных имен
б) Каждый домен имеет около 100000 сайтов
c) каждый сайт имеет около 10000 посещений в день / (5000 уникальных посещений в день)
d) Как владелец всех этих веб-сайтов, я хочу видеть, сколько посетителей на выбранных сайтах у меня было в выбранные периоды времени, например:
Сколько уникальных посетителей было с 4 декабря 1987 года по 23 апреля 2010 года на mydomain.com/tutorials
Сколько уникальных посетителей было с 30 августа 1996 года по 16 июля 2009 года на yourdomain.com/reference?
Для традиционной базы данных SQL это боль.
Какой самый умный подход? Какой механизм хранения использовать?
У меня есть только знания SQL. Любые дополнительные ресурсы с благодарностью.
2 ответа
С числами и потенциальными запросами, похожими на те, что вы перечислили, я бы очень хотел, чтобы простая база данных SQL (PSQL/TSQL) отвечала вашим потребностям. Вместо этого вам понадобится некоторая форма обработки OLAP, например SSAS (службы анализа SQL Server) или аналогичное предложение от Oracle.
Я думаю, что 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
Надеюсь, это поможет.