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

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

  • Upload
    harris

  • View
    44

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

Спасибо!