Система внутренней статистики odnoklassniki.ru

31
Система внутренней статистики odnoklassniki.ru Александр Шарак Руководитель отдела статистики Одноклассников

description

Система внутренней статистики odnoklassniki.ru. Александр Шарак Руководитель отдела статистики Одноклассников. Зачем ?. Оценивают эффективность Устанавливают цели Отслеживают достижение целей Наблюдают за активностью пользователей. Менеджеры. Статистика. - PowerPoint PPT Presentation

Transcript of Система внутренней статистики odnoklassniki.ru

Page 1: Система внутренней  статистики  odnoklassniki.ru

Система внутренней

статистики odnoklassniki.ru

Александр ШаракРуководитель отдела статистикиОдноклассников

Page 2: Система внутренней  статистики  odnoklassniki.ru

Зачем?

Статистика

Менеджеры

Разработчики

Администраторы

• Оценивают эффективность• Устанавливают цели• Отслеживают достижение целей• Наблюдают за активностью

пользователей

• Следят за качеством работы компонентов сайта

• Расследуют аномалии

• Мониторят компоненты сайта• Наблюдают за активностью

пользователей• Расследуют аномалии

Page 3: Система внутренней  статистики  odnoklassniki.ru

5-минутный график

Page 4: Система внутренней  статистики  odnoklassniki.ru

5-минутный график

Page 5: Система внутренней  статистики  odnoklassniki.ru

Дневной график

Page 6: Система внутренней  статистики  odnoklassniki.ru

Графики интерактивны

Page 7: Система внутренней  статистики  odnoklassniki.ru

Дешборд

http://www.flickr.com/photos/lofink/4501610335/

Page 8: Система внутренней  статистики  odnoklassniki.ru

Собственная WEB-аппликация для работы с дешбордами

http://www.flickr.com/photos/lofink/4501610335/

Page 9: Система внутренней  статистики  odnoklassniki.ru

Немного цифр

• Сайт логирует больше одного триллиона (1 000 000 000 000) действий в день.

• Свежие данные подгружаются с задержкой в 2-3 минуты. Почти в режиме реального времени.

• В часы пик сотрудники запрашивают до 40 графиков в секунду.

• Отдельный график в среднем высчитывается менее чем за одну секунду.

Page 10: Система внутренней  статистики  odnoklassniki.ru

Как мы этого достигли?

Page 11: Система внутренней  статистики  odnoklassniki.ru

Агрегация данных

Как обычно делают Как делаем мы

1. Тысячи серверов логируют действия в локальное или удаленное хранилище(чаще всего это файл).

2. Мега-кластер (например, Hadoop) из сотни серверов забирает эти терабайты (или петабайты) с данными и агрегирует.

1. Тысячи серверов не логируют каждое действие, а в памяти сразу агрегируют эти действия по:а) типам операцийб) значениям классификаторовв) 5 минутам

2. Раз в 5 минут каждый сервер передаёт собранную информацию в одну из четырех промежуточных баз данных (MS SQL)

Page 12: Система внутренней  статистики  odnoklassniki.ru

Агрегация данных

• Таким образом, мы вместо 10 миллиардов(10 000 000 000) записей за пять минут в час пик получаем всего 10 миллионов (10 000 000).

• Задача загрузки данных в DWH стала относительно простой.

Page 13: Система внутренней  статистики  odnoklassniki.ru

Загрузка данных

Logs - 1 Logs - 4Logs - 3Logs - 2

Более 3000 серверов

DWH 1 DWH 2

Каждые 5 минут

Как можно чаще

Все 4 базы имеют одинаковую структуру.Каждая содержит300 таблиц

Одна половина таблиц —

сюда…

…а вторая — сюда.

Выгрузка в одном потокетребует 0.5 сек на таблицу

Page 14: Система внутренней  статистики  odnoklassniki.ru

Нормализация

Counter Registered HostName Group0 Group2 Calls DurationAvg

5 2012-04-20 12:45:00 bsrvd20-10 createPhotoAlbum customAlbum 2 0

Registered ID_Host ID_AlfaInsureName ID_AlfaInsureParam Calls DurationAvg

2012-04-20 12:45:00 34 11 6 2 0

Page 15: Система внутренней  статистики  odnoklassniki.ru

Структура таблиц

• В каждой базе содержится по 150 таблиц с похожей структурой, легко поддающейся автоматизации.

• В каждой таблице:1) колонка Registered2) ссылки на классификаторы3) измерения

Registered ID_Host ID_AlfaInsureName ID_AlfaInsureParam Calls DurationAvg

2012-04-20 12:45:00 2006 1 2 2 0

Page 16: Система внутренней  статистики  odnoklassniki.ru

Индексы

• Индексы на дату и на каждый классификатор (foreign key), как «по учебнику» - не работают.

• Сейчас у нас у каждой таблицы один кластерный индекс со структурой(Registered, id_classifier1, id_classifier2…)

Page 17: Система внутренней  статистики  odnoklassniki.ru

Агрегаты по дням

• Для каждой из 300 таблиц мы построили агрегаты по дням.

• Количество записей в этих таблицах в 20 - 150 раз меньше, чем в основных таблицах.

Page 18: Система внутренней  статистики  odnoklassniki.ru

Базы с данными за один месяц• Оперативные графики в 99% случаев используют данные

не старше одного месяца.• Сделали базу, где храним данные за последний месяц.

Полный архив

31 день

График

Многократный приростпроизводительности 1%

Page 19: Система внутренней  статистики  odnoklassniki.ru

MS SQL partitioning and compression

• удаление старых данных за 1 минуту вместо 2 часов

• данные на диске «сжались» в 3.5 раза• подсчет графиков ускорился в несколько раз• загрузка данных происходит на 20% медленнее

Page 20: Система внутренней  статистики  odnoklassniki.ru

И все тормозит…• На оперативных графиках обычно выводятся

данные за 5 дней. • Один день данных одной таблицы по размеру

больше среднего занимает 0.5 GB. То есть для 5 дней надо считать с диска 2.5 GB данных.

• Дисковая подсистема обеспечивает скорость до 100 Mb/s. Получается 25 сек в эксклюзивном режиме для таблиц больше среднего.

• Самый популярный дешборд состоит из 80 графиков.

• А если запустить дневной график за месяц или год…

Page 21: Система внутренней  статистики  odnoklassniki.ru

Решение!• Представьте, что в момент X кто-то запрашивает некий

график.

• Через два часа другой пользователь запрашивает тот же график.

• Как получить новый график из предыдущего?

Page 22: Система внутренней  статистики  odnoklassniki.ru

DWH cache для 5 мин. графика• Вместо чтения 2.5GB надо считывать в 60 раз меньше

данных. То есть всего 41Mb. При скорости 100Mb/s это меньше 0.5 сек.

• Чем популярней график – тем он быстрее строится.• 99% процентов графиков стали строиться очень быстро.• 1% графиков строится относительно медленно.

Page 23: Система внутренней  статистики  odnoklassniki.ru

DWH cache для дневного графика

Page 24: Система внутренней  статистики  odnoklassniki.ru

DWH cache

• Система стала стабильной…

Page 25: Система внутренней  статистики  odnoklassniki.ru

• … но не идеальной

Page 26: Система внутренней  статистики  odnoklassniki.ru

На чём написано

• MS SQL 2008 R2 Enterprise Edition• От использования MS SQL Integrity Services мы отказались• Весь код загрузки и обработки данных написан на T-SQL• Весь код подсчёта графиков также написан на T-SQL• Весь код DWH-cache также написан на T-SQL• Для построения (rendering) графиков(и отчётов в целом)

используем MS SQL Reporting Services

Page 27: Система внутренней  статистики  odnoklassniki.ru

Неагрегированные данные• Данные, в которых есть идентификатор пользователя и

точная дата со временем• Например:

– логины (29.5 млрд записей за 2011 год), платежи, граф дружб, дарение подарков, загруженные фотки и другая информация

• Из этих данных мы высчитываем:– количество уникальных пользователей, которые сделали какие-то

действия и/или обладают каким-то свойством– например, сколько девушек из Самары 18-23 лет подружилось с

юношами из Москвы старше 50 лет

• MS SQL 2008 R2 Enterprise Edition• Всю обработку данных пишем на T-SQL• Front-end – MS SQL 2008 R2 Reporting Services

Page 28: Система внутренней  статистики  odnoklassniki.ru

OLAP

• Используем MS SQL 2008 R2 Analysis Services• Опыт - один год• Построили десять разных кубов• Средний объем куба – 1 млрд записей в таблице фактов• Объем самого большого куба – 4.5 млрд записей• В каждом кубе присутствует мера – distinct count• Мера distinct count вынуждает ограничивать объём куба• С мерами count и sum проблем нет• Мешает ограничение размера одного измерения

Page 29: Система внутренней  статистики  odnoklassniki.ru

Ресурсы• Статистикой занимается 4 разработчика

– Начал разработку один человек– Разработка первой версии заняла 3 месяца– Каждый год добавляем по одному разработчику

• Сервера – 30 (типичный сервер – 2 6-core CPU, 80GB RAM, 6-10TB Disk array):– 4 сервера для Reporting Services– 2 сервера для front-end– 7 серверов для данных 5-минутных и дневных графиков– 4 сервера для промежуточных баз данных– 6 серверов для статистики об объектах (userid)– 7 серверов для OLAP

Page 30: Система внутренней  статистики  odnoklassniki.ru

Спасибо за внимание!

Александр ШаракРуководитель отдела статистики

Одноклассники[email protected]

Page 31: Система внутренней  статистики  odnoklassniki.ru

Пожалуйста, поставьте оценку моему докладу.

Ваше мнение очень важно.

Спасибо!