Какую базу данных / технологию следует использовать для подсчета уникальных посетителей во временных рамках - PullRequest
1 голос
/ 22 октября 2010

У меня есть проблема с производительностью моей базы данных отчетов (в таблицах миллионы записей, 50+), когда я хочу вычислить различные столбцы, которые указывают уникальность посетителя, скажем, какой-то хеш-ключ.

Например: У меня есть эти столбцы: hashkey, имя, фамилия, date_datetime, сайт, пол и т. д. ...

Мне нужно разобраться в промежутке времени в 1 год, менее чем за 5 секунд:

SELECT COUNT(DISTINCT hashkey) FROM table WHERE visit_datetime BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD' 

Этот запрос будет быстрым для коротких промежутков времени, но если он будет больше одного месяца, он может занять более 30 с.

Есть ли лучшая технология для расчета чего-то подобного, чем реляционные базы данных?

Мне интересно, что Google Analytics использует для уникальных посетителей, которые рассчитывают на лету.

Ответы [ 3 ]

3 голосов
/ 22 октября 2010

Для отчетов и аналитики, типа того, что вы описываете, эти виды статистики, как правило, извлекаются, агрегируются и хранятся в хранилище данных или чем-то еще. Они хранятся в стиле, предназначенном для повышения производительности, вместо приятных методов реляционного хранения, оптимизированных для OLTP (обработка транзакций в режиме онлайн). Этот предварительно агрегированный метод называется OLAP (интерактивная аналитическая обработка).

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

Google Analytics использует собственный файл cookie, который можно увидеть, если вы регистрируете заголовки запросов, используя LiveHTTPHeaders и т. Д.

Все параметры аналитики GA упакованы в URL-адрес запроса, например,

utma% 3D97315849.1774621898.1207701397.1207701397.1207701397.1% 3B "> http://www.google -analytics.com / _utm.gif? Utmwv = 4 & utmn = 769876874 & utmhn = example.com & ut59ns = 88.tmcs = ISO.com & ut59ns = 88.com= 1280x1024 & utmsc = 32-битовый & utmul = EN-US & utmje = 1 & utmfl = 9,0% 20% 20r115 & utmcn = 1 & utmdt = gATC012% 20setting% 20variables & utmhid = 2059107202 & utmr = 0 & utmp = / авто / GATC012.html? utm_source = www.gatc012.org & utm_campaign = кампания + gatc012 & utm_term =ключевые слова + gatc012 & utm_content = content + gatc012 & utm_medium = medium + gatc012 & utmac = UA-30138-1 & utmcc = __ utma% 3D97315849.1774621898.1207701397.1207701397.1207701397.1% 3B ... 1011 1019 *1011* 1019 __ utmcc , это куки-файлы GA. Внутри _utmcc есть строка с ключом _utma , которая состоит из шести полей, каждое из которых разделено''.Второе поле - это Идентификатор посетителя, случайное число, сгенерированное и установленное сервером GA после поиска файлов cookie GA и их отсутствия:

__utma%3D97315849.1774621898.1207701397.1207701397.1207701397.1

В этом примере *1019* 1774621898 - этоИдентификатор посетителя, предназначенный Google Analytics в качестве уникального идентификатора каждого посетителя

. Таким образом, вы можете увидеть недостатки техники для идентификации уникальных посетителей - вход на сайт с использованием другого браузера, другого устройства или после удалениякуки-файлы заставят вас появляться в GA как уникального посетителя (т. е. он ищет свои куки-файлы и не находит их, поэтому устанавливает их).

Есть отличная статья от EFF по этой теме - то есть, как можно установить уникальность и с какой степенью уверенности и как ее можно победить.

Наконец, однажды метод, который я использовал, чтобы определить, посетил ли кто-тоНаш сайт ранее (если принять во внимание сложный случай, когда они удалили свои cookie-файлы и т. д.), должен изучить запрос клиента на наш favicon .Каталоги, в которых хранятся значки избранного, часто упускаются из виду - будь то ручная развертка или программно с использованием сценария.

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

В другой таблице можно хранить количество уникальных посетителей за каждый день, обновляемое ежедневно функцией cron или чем-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...