База данных Google Analytics - PullRequest
       5

База данных Google Analytics

15 голосов
/ 21 января 2010

Кто-нибудь знает, как организованы данные в Google Analytics? Сложный выбор из больших объемов данных, которые они выполняют очень-очень быстро, какова структура базы данных?

Ответы [ 5 ]

11 голосов
/ 21 января 2010

AFAIK Google Analytics является производной от Urchin. Как уже было сказано, возможно, что с тех пор Analytics является частью семейства Google и использует MapReduce / BigTable. Я могу предположить, что Google интегрировал старый формат Urchin DB с новым BigTable / MapReduce.

Я нашел эти ссылки, которые говорят о БД Urchin. Возможно, некоторые из них все еще используются в данный момент.

http://www.advanced -web-metrics.com / блог / 2007/10/16 / что-это-еж /

это говорит:

[snip] ... по-прежнему используется собственная база данных для хранения отчетных данных, что делает специальные запросы немного более ограниченными, поскольку приходится использовать инструменты, разработанные Urchin, а не более гибкие инструменты SQL.

http://www.urchinexperts.com/software/faq/#ques45

Какой тип базы данных использует Urchin?

Urchin использует собственную базу данных плоских файлов для хранения данных отчета. Высокопроизводительная архитектура базы данных эффективно обрабатывает сайты с очень высоким трафиком. Некоторые из преимуществ архитектуры базы данных включают в себя:

* Small database footprint approximately 5-10% of raw logfile size
* Small number of database files required per profile (9 per month of historical reporting)
* Support for parallel processing of load-balanced webserver logs for increased performance
* Databases are standard files that are easy to back up and restore using native operating system utilitiesv 

Подробнее о Urchin

http://www.google.com/support/urchin45/bin/answer.py?answer=28737

Давным-давно у меня был трекер, и на их сайте обсуждали нормализацию данных: http://www.2enetworx.com/dev/articles/statisticus5.asp

Там вы можете найти немного информации о том, как уменьшить объем данных в БД, и, возможно, это хорошее начало исследований.

4 голосов
/ 18 июня 2013

BigTable

Публикация Google: Chang, Fay, et al. " Bigtable: распределенная система хранения структурированных данных. " Транзакции ACM в компьютерных системах (TOCS) 26.2 (2008):

Bigtable используется более шестидесяти продуктами и проектами Google, в том числе Google Analytics , Google Finance, Orkut, персонализированные Поиск, Writely и Google Планета Земля.

2 голосов
/ 04 сентября 2018

Я не могу точно знать, как они это реализуют. Но поскольку я создал продукт, который извлекает не сэмплированные, не агрегированные данные из Google Analytics, я кое-что узнал о структуре.

Я считаю, что данные заполняются через BigTable. BT предлагает осведомленность о локализации данных и отображение / сокращение запросов по n-узлам.

Отличный счет (Независимо от того, может ли служба данных обеспечить различное количество или нет, это простая мера гибкости модели данных, но обычно это также мера стоимости и производительности)

Google Analytics не рассчитана на четкие подсчеты, даже если GA может рассчитывать пользователей практически по любому измерению, но не может подсчитывать, например, Сеансов за га: pagePath? Как так... Ну, они только регистрируют сеанс с первым pageView в сеансе. Это означает, что мы можем только посчитать, сколько посадочных страниц было сессией. Мы не учитываем все остальные 99% страниц вашего сайта. : /

Причина этого в том, что Google сделал выбор НЕ рассчитывать количество скидок вообще. Это просто плохо масштабируется при обслуживании миллионов сайтов бесплатно. Они нуждались в подходе, где они могли бы избежать подсчета отличных. Отличительный счетчик - все о сортировке, группировании списков идентификаторов для каждой ячейки в пересечении данных.

Но ... Разве не просто подсчитать различное количество сеансов по значению ga: pagePath? Я отвечу на это немного

Пользователь и разделение данных Выбор, который они сделали, состоял в том, чтобы разделить данные на пользователей (clientIds или userIds) Потому что, когда они знают, что clientId / userId X присутствует только в определенной таблице в BT, они могут запускать функцию сопоставления / уменьшения, которая подсчитывает пользователей, и им не нужно беспокоиться о том, что тот же пользователь присутствует в другом наборе данных, и вынуждает хранить все clientIds / userIds в списке - группировать их, а затем считать их - отдельно. Поскольку текущий скрипт отслеживания GA называется Universal Analytics, они должны иметь возможность правильно рассчитывать количество пользователей. Особенно при фокусировке на отслеживании между устройствами.

ОК, но как это влияет на количество сеансов? У вас есть набор пользователей, каждый из которых имеет несколько наборов сеансов, каждый из которых имеет список посещений страницы. При подсчете в определенном сеансе в поисках pagePaths вы найдете одну и ту же страницу несколько раз, но не будете считать страницу более одного раза. Вам нужно записать, что вы уже видели эту страницу раньше. Когда вы прошли все страницы в этом сеансе, вам нужно только посчитать сеанс на страницу. Эта процедура требует состояния / памяти. И поскольку процесс подсчета, вероятно, выполняется параллельно на одном и том же сервере. Вы не можете быть уверены, что конкретный сеанс обрабатывается тем же процессом. Что делает подсчет еще более трудоемким. Google решил больше не гоняться за этим кроликом и просто проигнорировал, что счетчик сеансов неверен для pagePath и других измерений области попадания.

"Куб" хранилище Причина, по которой я пишу «куб», заключается в том, что я точно не знаю, используют ли они традиционную структуру куба OLAP, но я знаю, что для ответа на различные комбинации измерений / метрик заполнено до 100 кубов.

Из-за изоляции / группировки измерений в меньшие кубы данные не будут взорваться экспоненциально, как если бы они помещали все данные в один куб. Недостатком является то, что не все комбинации данных допускаются. Что мы знаем, это правда. Например. ga: TransactionsId и ga: eventCategory не могут быть запрошены вместе.

При выборе этой структуры набор данных может масштабироваться очень экономично и с точки зрения производительности

2 голосов
/ 21 января 2010

Я предполагаю, что они используют свой ' Большой стол '

1 голос
/ 21 января 2010

Многие места и приложения в портфолио Google используют алгоритм MapReduce для хранения и обработки больших объемов данных.

См. Публикации исследований Google по MapReduce для получения дополнительной информации, а также ознакомьтесь с страница 4 и страница 5 из это Базовая статья.

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