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