2010-10-24 2 views
1

а) У меня есть 1000000 доменных именnosql пример, какой двигатель?

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

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

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

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

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

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

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

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

+0

Что вы считаете «традиционным SQL» и почему вы думаете, что это «боль»? Вы проводили тесты? –

+0

Традиционный => SQL, нет тестов, это теория. Боль из-за использования процессора и памяти, и, конечно же, времени для получения данных из БД. – astropanic

ответ

1

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

+0

Спасибо, человек попробует http://en.wikipedia.org/wiki/Comparison_of_OLAP_Servers – astropanic

0

Я думаю, что DB является лучшим подходом для этой опции Вы просто должны cr4eate пары таблиц и распространением данных между ними, например:

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,

Надежда, что помогает.

+0

Это связано с SQL, и это ресурсоемкий (процессор, память) и slooooow, спасибо в любом случае – astropanic