SlideShare a Scribd company logo
1 of 48
Аналитическая инфраструктура
 оптимизации рекламной сети
       Александр Зайцев
           LifeStreet
О себе

• ВМК МГУ 1999
• 15 лет в разработке
• 13 лет в стартапах
• 10лет разработки распределенных систем
  большой нагрузки
• 5 лет разработки аналитической
  инфраструктуры рекламной сети



                   Confidential
План выступления

•   Как работает рекламная сеть
•   Что такое оптимизация рекламной сети
•   Постановка технической проблемы
•   Возможные решения
•   Как это делаем мыв LifeStreet




                     Confidential
Что такое рекламная сеть


                           RTB Buy                         RTB Sell

Visitors
           Publishers                       Ad Network                    Advertisers


                          Affiliates                       Affiliates



Geo        Web sites                                                    Campaigns
Device     Applications                       best match                Ads
History    Slots                                                        Landing pages




                                       Confidential
Экономика рекламной сети

                                $$$

Visitors
            Publishers                Ad Network               Advertisers




                         $$                              $$

              • Flat CPM (мы платим за показы)     • RPA (нам платят за клиентов)
              •RevShare %                          •RevShare

                                  риск                        риск

                               Время

                                 Confidential
Что такое оптимизация

• Что, где, когда, кому и как показывать
• Сколько платить за показ в RTB
• Задача сети – наилучшим образом
  использовать все показы:
  – Наилучшим для рекламодателя – больше
    клиентов
  – Наилучшим для рекламной площадки – выше
    CPM



                     Confidential
Как происходит оптимизация

• Много-много экспериментов (тестов)
  – Ручные и автоматические
  – A/B split, multi-variant
• Averages lie
  – Надо «дробить» статистику
  – Проблема репрезентативности объема
• Data Mining
• Зависимость от времени:
  – Рынок все время меняется
  – Объявления «устают»


                       Confidential
Круговорот экспериментов


          Работа
                                         ETL
         системы




               Run             Collect


  Средства    Action          Analyze          Организация
 управления                                     и хранение




                   Средства
                   доступа и
                    анализа



                     Confidential
Типы анализа

• Эксперимент – сравнить с эталоном
• AdHoc– задать произвольный вопрос и
  быстро получить ответ
• Алгоритмический – автоматические
  алгоритмы (machine learning)
• Моделирование Мира – как бы вела себя
  сеть, если бы условия были другими



                   Confidential
Причем тут HighLoad?

• Рекламные сети = большие нагрузки
  – Сотни миллионов, миллиарды показов
  – Кластеры фронтендов
  – Терабайты логов




 И все это бесполезно без возможности
          анализа и оптимизации
                     Confidential
Аналитическая инфраструктура




            Confidential
Что такое аналитическая инфраструктура

1. Логгирование и сбор данных (ETL)
2. Организация и хранение данных
3. Средства доступа/анализа




                    Confidential
Требования к инфраструктуре

•   Скорость загрузки
•   Latency(отставание)
•   Скорость ответа
•   Гибкость запросов
•   Расширяемость схемы
•   Масштабируемость                      КОМПРОМИССЫ
•   Отказоустойчивость                    !
•   Нефункциональные:
    – Цена
    – Commodity hardware



                           Confidential
Онтология

•   Что представляют собой данные
•   Как их интерпретировать
•   Меняется со временем
•   Бывает недоопределенной
    – Браузеры
    – Мобильные устройства
• Модель данных – реализация онтологии
• Идеальный мир – модель генерируется из
  онтологии (например, из OWL)


                      Confidential
Требования к модели данных

• Оптимизация рекламы = многомерный
  анализ (статистический)
  – Многомерные кубы (сотни измерений)
  – Произвольные сечения (фильтры)
  – Произвольные проекции (агрегирование)
  – Объединения кубов




                     Confidential
Кубы, сечения, проекции

Типичный аналитический запрос:
range scan + group by на маленькое подмножество измерений




                       N-dimensional
                                           range
                           cube
                         сечение




                               M-
                           dimensional
                            projection


                          Confidential
Возможные решения

• Бэкенд:
  – Традиционная RDBMS
  – Нетрадиционная (специализированная) RDBMS
  – NoSQL(Dynаmo-like или Hadoop)
  – Гибридные решения
• Загрузка:
  – Пакетная
  – Непрерывная



                    Confidential
Компромиссы




     Confidential
Гибридные решения

               Единая точка доступа




    NoSQL              RDBMS                Hadoop




Быстро, негибко,     Гибко и             Очень гибко и
масштабируемо        достаточно          очень не быстро
                     быстро



                          Confidential
О LifeStreet

• Основана в 2005
                                          Facebook Apps
• Запуск реклмной сети в FaceBookв 2008
• Крупнейшая рекламная сетьв
  приложениях FaceBookc 2010 (выбили
  Google)
• Запуск рекламной сети в мобильных
  приложениях в 2011
• Ежеквартальный рост доходов
• 3/4 технологии, 1/4 бизнес               Mobile Apps




                         Confidential
LifeStreetв цифрах

•   ~300M показов в день
•   ~1100М бидов в день
•   Десятки ручных тестов в день
•   Десятки тысяч автоматических тестов в день
    – Можно также считать, что показ = тест (или
      много)
• ~3TB ежедневно обрабатываемых данных
• 350+ измерений (125 независимых), 80+
  метрик

                         Confidential
Эволюционные шаги

•   2007 MySQL
•   2008 Oracle
•   2009 MySQL+TokuDB
•   2010 Vertica
•   2012 Vertica + Cassandra




                       Confidential
Некоторые очевидные принципы

• Много данных – узкое место диск
  –   Нормализация – короткие ключи
  –   Денормализация – иерархии, агрегирование
  –   Временные таблицы для промежуточных этапов
  –   Кэши
  –   Партиционирование по времени
  –   Random vs. sequential IO
• Данные теряют ценность со временем
  – Удаление старых данных
  – Разные стратегии удаления для разной
    гранулярности

                        Confidential
Упрощенная модель данных

• Star или snow flake схема
   – Fact = произошло событие
   – Dimension = свойство события
   – Metric = количественная
     характеристика факта

• Денормализация
   – Иерархии (одна таблица, ключ
     по самому нижнему уровню)
      • Час <День< Месяц<Год
      • Слот<Сайт< Publisher
   – Многочисленные агрегаты
      • Оптимизированы под разные use
        cases


                               Confidential
MySQL

• 100GB DWH (5 лет назад)
• Пакетная загрузка
• Аттрибуция ключейчерез хранимую процедуру
• Активное использование temp tables и memory
  (hash index)
• Факты/агрегаты – MyISAM, измерения –
  InnoDB
• Проблемы с ростом размера таблиц и
  индексов



                     Confidential
Oracle

•   Как надстройка за MySQL
•   ETL ->MySQL table ->csv -> Oracle
•   MVsвместо агрегатов
•   Проблемы
    – Сильная зависимость от DBA
    – MVs очень тяжело поддерживать




                        Confidential
MySQLcTokuDB

•   Масштабирование MySQL для OLAP
•   Компрессия данных и индексов (~ в 5 раз)
•   Кластеризующие индексы (индекс+данные вместе)
•   Fractal-tree индексы (fractional cascading)
•   Неблокирующее добавление индексов*
•   Неблокирующее добавление колонок*
•   Проблемы
    – Неэффективные планы в некоторых случаях
    – Некластер

* Появились после того, как мы перестали использовать



                          Confidential
Чем плохи B-Trees – inserts




             * From MySQL UC 2010 Tokutek presentation
             Confidential
Чем плохи B-Trees – range scans




               * From MySQL UC 2010 Tokutek presentation
               Confidential
TokuDB–компрессия




                       * From Percona 2009 benchmark

        Confidential
TokuDB–inserts




                      * From Percona 2009 benchmark

       Confidential
Выбор альтернативы

• Критерии выбора:
  –   Column store (почему?)
  –   Scalability and failover (cluster)
  –   Скорость типичных OLAP запросов
  –   Поддержка, документация и т.п.
• Тест-проект на системах:
  –   GreenPlum
  –   CalpointInfiniDB
  –   ParAccel
  –   Vertica
• Verticaвыиграла с большим отрывом


                           Confidential
Итак, Vertica

• Колонки!
• Эффективная компрессия данных
    – Много стратегий
    – У нас в среднем в 13 раз (в TokuDBв 5 раз)
•   Нет индексов!
•   Очень быстрая загрузка (можно параллельно)
•   Simply Fast
•   MPP
•   Ноль администрирования (почти)

                           Confidential
Физическое представление

• Проекции (projection)
  – Подмножество колонок с сортировкой
  – Для каждой таблицы есть супер-проекция = все
    колонки
  – Возможны pre-join проекции
• Тип кодирования колонок:
     •   RLE
     •   DELTAVAL
     •   BLOCK_DICT
     •   Etc.12 разных способов
• Группы колонок (фрагменты строк)
• Сортировка (особенно важна для RLE)
• Сегментация по узлам кластера


                                  Confidential
Выполнение запросов

• Только «нужные» колонки
• Сильно зависит от структуры проекций (не
  таблиц)
• Есть автоматический DB-designer
  – Дизайн по данным (наилучшее хранение)
  – Дизайн по конкретным запросам
• Ключевые инструменты – RLE с сортировкой и
  сегментация
  – Предикаты по отсортированной колонке = индексы
  – Джойны – merge, hash
  – Группировка


                      Confidential
Блоки RLE

• RLE – run length encoding
• Идеально для колонок с низкой кардинальностью
Gender   Age           Impressions
                                              select sum(impressions) from t
               1-20
                                              where gender=‘M’ and age=‘21-25’
           21-25
   M
           26-35
               36+
               1-20
           21-25
    F
           26-35
               36+

1 I/O     1 I/O        1 I/O

                               Confidential
Блоки RLE

• RLE – run length encoding
• Идеально для колонок с низкой кардинальностью
Gender   Age           Impressions
                                             select sum(impressions) from t
               1-20
                                             where age=‘21-25’
           21-25
   M
           26-35
               36+
               1-20
           21-25
   F
           26-35
               36+

          2 I/O        2I/O

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

• Две зоны хранения:
  – WOS (in-memory)
  – ROS (on-disk)
  – Перенос из WOS в ROS автоматический
• Загрузка большими порциями очень быстрая
• Удаление и апдейты – плохо
  – Удаление – метка
  – Апдейты – удаление + добавление
  – «Сборка мусора»
     • При переносе из WOS в ROS
     • При объединении ROS-контейнеров
     • По команде


                         Confidential
Кластер

• 3..N узлов
• Конфигурируется на уровне проекции
  – Несегментированные – каждая нода полные
    данные
  – Сегментированные – каждая нода 1/N данных
  – K-safety level – уровень дублирования
  – Полный контроль

 1      2     3      4                  5

 A     A      A      A                  A   Несегментированная
 A     B      C      D                  E   Сегментированная, K-
 E     A      B      C                  D   safety=1 со смещением 1

                         Confidential
Требования к ETL

• Масштабирование
• Равномерная загрузка (балансировка)
• Устойчивость к сбоям:
  – Сети
  – Софта
  – Кривые данные
• Онтология
  – Трудность поддержки динамических измерений
• Исходные данные:
  – Логи рекламных серверов
  – Адаптер, интегрированный в сервер


                       Confidential
ETL




• LMS «собирает» логи с серверов, и распределяет их по ETL
•5мин лог, 3000 файлов в час, 10-30К записей в файле (тяжелый JSON)
• Двухфазный (по историческим причинам), Java+bsh+sql
• Latency 20-30 минут
                                 Confidential
Многоуровневый Failover

• Сбой ETL
  – Переключение на другой
  – Есть резервные в запасе
• Сбой внутри кластера
  – Сбой диска:
     • Замена узла на резервный
     • Замена диска и возвращение узла в резерв
  – Сбой узла:
     • Замена узла на резервный
     • Заказ нового резервного узла
• Сбой кластера
  – Переключение на резервный (полная работающая
    копия со своим ETL-кластером)


                             Confidential
“One size does not fit all”

• Michael Stonebreaker’sstartups:
  – StreamBase – CEP
  – Vertica – OLAP
  – VoltDB – OLTP
• У нас тоже – разные случаи:
  – Внешние пользователи
     • Ограниченная гибкость, легкие запросы
  – Внутренние пользователи
     • Максимальная гибкость, любые запросы
  – Машины (optimizer, pacing controller etc.)
     • Ограниченная гибкость, тяжелые запросы, минимальная
       latency



                           Confidential
Многообразие систем

                                                    Плюсы:
                                                    • Распределение нагрузки
Runtime         General                 Optimizer   • Снижает риски
 DWH             DWH                      DWH
                                                    Минусы:
                                                    • Сложнее поддерживать
                                                    • Целостность данных
                StandBy
                 DWH




Pacing       Internal/Externa         Optimizer
Learning     l users
Monitoring   Financial master




                                Confidential
Аналитика реального времени


Ad Server       Ad Server                   Ad Server



            Непрерывный поток
            (возможно, небольшими
            пакетами)             • Имплементировано в
                                       Zynga
                     Vertica           • 100+ nodes cluster
                                       • 5+ TB/day
                                       •Сырые данные потом
                                       дополнительно
                                       обрабатываются
                                       • В случае сбоя сети
                                       данные теряются
                        Confidential
Аналитика реального времени


Ad Server   Ad Server                     Ad Server



            Минутные сбросы
            счетчиков

                                   • Идея Twitter Rainbird
                                   •Cassandra Counters
               Cassandra
                                   • Гибкость сильно
                                   ограничена
                                   • Работает для простых
                                   случаев
                                   • Устойчива к сетевым
                                   проблемам
                    Confidential
Субъективностьаналитики

• Отражает состояние миракак его ощущает
  рантайм
• Искажает его собственными моделями
  восприятия




                  Confidential
СПАСИБО!


   Confidential

More Related Content

What's hot

Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
Oleg Tsarev
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Ontico
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
odnoklassniki.ru
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 

What's hot (20)

Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
 Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва  Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
 
ClickHouse
ClickHouseClickHouse
ClickHouse
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
20131105 романенко
20131105 романенко20131105 романенко
20131105 романенко
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 

Similar to Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
Leonid Yuriev
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
Andrey Korshikov
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ontico
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Ontico
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
Iosif Itkin
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
Andrey Korshikov
 

Similar to Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев) (20)

Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбора
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
Big Data
Big DataBig Data
Big Data
 
Big data
Big dataBig data
Big data
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
 
Oracle Big Data proposition
Oracle Big Data propositionOracle Big Data proposition
Oracle Big Data proposition
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 
Особенности тестирования сloud-приложений
Особенности тестирования сloud-приложенийОсобенности тестирования сloud-приложений
Особенности тестирования сloud-приложений
 
Управление данными и защита от сбоев. Решения КРОК на основе продуктов COMMVAULT
Управление данными и защита от сбоев. Решения КРОК на основе продуктов COMMVAULTУправление данными и защита от сбоев. Решения КРОК на основе продуктов COMMVAULT
Управление данными и защита от сбоев. Решения КРОК на основе продуктов COMMVAULT
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 

More from Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

  • 1. Аналитическая инфраструктура оптимизации рекламной сети Александр Зайцев LifeStreet
  • 2. О себе • ВМК МГУ 1999 • 15 лет в разработке • 13 лет в стартапах • 10лет разработки распределенных систем большой нагрузки • 5 лет разработки аналитической инфраструктуры рекламной сети Confidential
  • 3. План выступления • Как работает рекламная сеть • Что такое оптимизация рекламной сети • Постановка технической проблемы • Возможные решения • Как это делаем мыв LifeStreet Confidential
  • 4. Что такое рекламная сеть RTB Buy RTB Sell Visitors Publishers Ad Network Advertisers Affiliates Affiliates Geo Web sites Campaigns Device Applications best match Ads History Slots Landing pages Confidential
  • 5. Экономика рекламной сети $$$ Visitors Publishers Ad Network Advertisers $$ $$ • Flat CPM (мы платим за показы) • RPA (нам платят за клиентов) •RevShare % •RevShare риск риск Время Confidential
  • 6. Что такое оптимизация • Что, где, когда, кому и как показывать • Сколько платить за показ в RTB • Задача сети – наилучшим образом использовать все показы: – Наилучшим для рекламодателя – больше клиентов – Наилучшим для рекламной площадки – выше CPM Confidential
  • 7. Как происходит оптимизация • Много-много экспериментов (тестов) – Ручные и автоматические – A/B split, multi-variant • Averages lie – Надо «дробить» статистику – Проблема репрезентативности объема • Data Mining • Зависимость от времени: – Рынок все время меняется – Объявления «устают» Confidential
  • 8. Круговорот экспериментов Работа ETL системы Run Collect Средства Action Analyze Организация управления и хранение Средства доступа и анализа Confidential
  • 9. Типы анализа • Эксперимент – сравнить с эталоном • AdHoc– задать произвольный вопрос и быстро получить ответ • Алгоритмический – автоматические алгоритмы (machine learning) • Моделирование Мира – как бы вела себя сеть, если бы условия были другими Confidential
  • 10. Причем тут HighLoad? • Рекламные сети = большие нагрузки – Сотни миллионов, миллиарды показов – Кластеры фронтендов – Терабайты логов И все это бесполезно без возможности анализа и оптимизации Confidential
  • 12. Что такое аналитическая инфраструктура 1. Логгирование и сбор данных (ETL) 2. Организация и хранение данных 3. Средства доступа/анализа Confidential
  • 13. Требования к инфраструктуре • Скорость загрузки • Latency(отставание) • Скорость ответа • Гибкость запросов • Расширяемость схемы • Масштабируемость КОМПРОМИССЫ • Отказоустойчивость ! • Нефункциональные: – Цена – Commodity hardware Confidential
  • 14. Онтология • Что представляют собой данные • Как их интерпретировать • Меняется со временем • Бывает недоопределенной – Браузеры – Мобильные устройства • Модель данных – реализация онтологии • Идеальный мир – модель генерируется из онтологии (например, из OWL) Confidential
  • 15. Требования к модели данных • Оптимизация рекламы = многомерный анализ (статистический) – Многомерные кубы (сотни измерений) – Произвольные сечения (фильтры) – Произвольные проекции (агрегирование) – Объединения кубов Confidential
  • 16. Кубы, сечения, проекции Типичный аналитический запрос: range scan + group by на маленькое подмножество измерений N-dimensional range cube сечение M- dimensional projection Confidential
  • 17. Возможные решения • Бэкенд: – Традиционная RDBMS – Нетрадиционная (специализированная) RDBMS – NoSQL(Dynаmo-like или Hadoop) – Гибридные решения • Загрузка: – Пакетная – Непрерывная Confidential
  • 18. Компромиссы Confidential
  • 19. Гибридные решения Единая точка доступа NoSQL RDBMS Hadoop Быстро, негибко, Гибко и Очень гибко и масштабируемо достаточно очень не быстро быстро Confidential
  • 20. О LifeStreet • Основана в 2005 Facebook Apps • Запуск реклмной сети в FaceBookв 2008 • Крупнейшая рекламная сетьв приложениях FaceBookc 2010 (выбили Google) • Запуск рекламной сети в мобильных приложениях в 2011 • Ежеквартальный рост доходов • 3/4 технологии, 1/4 бизнес Mobile Apps Confidential
  • 21. LifeStreetв цифрах • ~300M показов в день • ~1100М бидов в день • Десятки ручных тестов в день • Десятки тысяч автоматических тестов в день – Можно также считать, что показ = тест (или много) • ~3TB ежедневно обрабатываемых данных • 350+ измерений (125 независимых), 80+ метрик Confidential
  • 22. Эволюционные шаги • 2007 MySQL • 2008 Oracle • 2009 MySQL+TokuDB • 2010 Vertica • 2012 Vertica + Cassandra Confidential
  • 23. Некоторые очевидные принципы • Много данных – узкое место диск – Нормализация – короткие ключи – Денормализация – иерархии, агрегирование – Временные таблицы для промежуточных этапов – Кэши – Партиционирование по времени – Random vs. sequential IO • Данные теряют ценность со временем – Удаление старых данных – Разные стратегии удаления для разной гранулярности Confidential
  • 24. Упрощенная модель данных • Star или snow flake схема – Fact = произошло событие – Dimension = свойство события – Metric = количественная характеристика факта • Денормализация – Иерархии (одна таблица, ключ по самому нижнему уровню) • Час <День< Месяц<Год • Слот<Сайт< Publisher – Многочисленные агрегаты • Оптимизированы под разные use cases Confidential
  • 25. MySQL • 100GB DWH (5 лет назад) • Пакетная загрузка • Аттрибуция ключейчерез хранимую процедуру • Активное использование temp tables и memory (hash index) • Факты/агрегаты – MyISAM, измерения – InnoDB • Проблемы с ростом размера таблиц и индексов Confidential
  • 26. Oracle • Как надстройка за MySQL • ETL ->MySQL table ->csv -> Oracle • MVsвместо агрегатов • Проблемы – Сильная зависимость от DBA – MVs очень тяжело поддерживать Confidential
  • 27. MySQLcTokuDB • Масштабирование MySQL для OLAP • Компрессия данных и индексов (~ в 5 раз) • Кластеризующие индексы (индекс+данные вместе) • Fractal-tree индексы (fractional cascading) • Неблокирующее добавление индексов* • Неблокирующее добавление колонок* • Проблемы – Неэффективные планы в некоторых случаях – Некластер * Появились после того, как мы перестали использовать Confidential
  • 28. Чем плохи B-Trees – inserts * From MySQL UC 2010 Tokutek presentation Confidential
  • 29. Чем плохи B-Trees – range scans * From MySQL UC 2010 Tokutek presentation Confidential
  • 30. TokuDB–компрессия * From Percona 2009 benchmark Confidential
  • 31. TokuDB–inserts * From Percona 2009 benchmark Confidential
  • 32. Выбор альтернативы • Критерии выбора: – Column store (почему?) – Scalability and failover (cluster) – Скорость типичных OLAP запросов – Поддержка, документация и т.п. • Тест-проект на системах: – GreenPlum – CalpointInfiniDB – ParAccel – Vertica • Verticaвыиграла с большим отрывом Confidential
  • 33. Итак, Vertica • Колонки! • Эффективная компрессия данных – Много стратегий – У нас в среднем в 13 раз (в TokuDBв 5 раз) • Нет индексов! • Очень быстрая загрузка (можно параллельно) • Simply Fast • MPP • Ноль администрирования (почти) Confidential
  • 34. Физическое представление • Проекции (projection) – Подмножество колонок с сортировкой – Для каждой таблицы есть супер-проекция = все колонки – Возможны pre-join проекции • Тип кодирования колонок: • RLE • DELTAVAL • BLOCK_DICT • Etc.12 разных способов • Группы колонок (фрагменты строк) • Сортировка (особенно важна для RLE) • Сегментация по узлам кластера Confidential
  • 35. Выполнение запросов • Только «нужные» колонки • Сильно зависит от структуры проекций (не таблиц) • Есть автоматический DB-designer – Дизайн по данным (наилучшее хранение) – Дизайн по конкретным запросам • Ключевые инструменты – RLE с сортировкой и сегментация – Предикаты по отсортированной колонке = индексы – Джойны – merge, hash – Группировка Confidential
  • 36. Блоки RLE • RLE – run length encoding • Идеально для колонок с низкой кардинальностью Gender Age Impressions select sum(impressions) from t 1-20 where gender=‘M’ and age=‘21-25’ 21-25 M 26-35 36+ 1-20 21-25 F 26-35 36+ 1 I/O 1 I/O 1 I/O Confidential
  • 37. Блоки RLE • RLE – run length encoding • Идеально для колонок с низкой кардинальностью Gender Age Impressions select sum(impressions) from t 1-20 where age=‘21-25’ 21-25 M 26-35 36+ 1-20 21-25 F 26-35 36+ 2 I/O 2I/O Confidential
  • 38. Загрузка данных • Две зоны хранения: – WOS (in-memory) – ROS (on-disk) – Перенос из WOS в ROS автоматический • Загрузка большими порциями очень быстрая • Удаление и апдейты – плохо – Удаление – метка – Апдейты – удаление + добавление – «Сборка мусора» • При переносе из WOS в ROS • При объединении ROS-контейнеров • По команде Confidential
  • 39. Кластер • 3..N узлов • Конфигурируется на уровне проекции – Несегментированные – каждая нода полные данные – Сегментированные – каждая нода 1/N данных – K-safety level – уровень дублирования – Полный контроль 1 2 3 4 5 A A A A A Несегментированная A B C D E Сегментированная, K- E A B C D safety=1 со смещением 1 Confidential
  • 40. Требования к ETL • Масштабирование • Равномерная загрузка (балансировка) • Устойчивость к сбоям: – Сети – Софта – Кривые данные • Онтология – Трудность поддержки динамических измерений • Исходные данные: – Логи рекламных серверов – Адаптер, интегрированный в сервер Confidential
  • 41. ETL • LMS «собирает» логи с серверов, и распределяет их по ETL •5мин лог, 3000 файлов в час, 10-30К записей в файле (тяжелый JSON) • Двухфазный (по историческим причинам), Java+bsh+sql • Latency 20-30 минут Confidential
  • 42. Многоуровневый Failover • Сбой ETL – Переключение на другой – Есть резервные в запасе • Сбой внутри кластера – Сбой диска: • Замена узла на резервный • Замена диска и возвращение узла в резерв – Сбой узла: • Замена узла на резервный • Заказ нового резервного узла • Сбой кластера – Переключение на резервный (полная работающая копия со своим ETL-кластером) Confidential
  • 43. “One size does not fit all” • Michael Stonebreaker’sstartups: – StreamBase – CEP – Vertica – OLAP – VoltDB – OLTP • У нас тоже – разные случаи: – Внешние пользователи • Ограниченная гибкость, легкие запросы – Внутренние пользователи • Максимальная гибкость, любые запросы – Машины (optimizer, pacing controller etc.) • Ограниченная гибкость, тяжелые запросы, минимальная latency Confidential
  • 44. Многообразие систем Плюсы: • Распределение нагрузки Runtime General Optimizer • Снижает риски DWH DWH DWH Минусы: • Сложнее поддерживать • Целостность данных StandBy DWH Pacing Internal/Externa Optimizer Learning l users Monitoring Financial master Confidential
  • 45. Аналитика реального времени Ad Server Ad Server Ad Server Непрерывный поток (возможно, небольшими пакетами) • Имплементировано в Zynga Vertica • 100+ nodes cluster • 5+ TB/day •Сырые данные потом дополнительно обрабатываются • В случае сбоя сети данные теряются Confidential
  • 46. Аналитика реального времени Ad Server Ad Server Ad Server Минутные сбросы счетчиков • Идея Twitter Rainbird •Cassandra Counters Cassandra • Гибкость сильно ограничена • Работает для простых случаев • Устойчива к сетевым проблемам Confidential
  • 47. Субъективностьаналитики • Отражает состояние миракак его ощущает рантайм • Искажает его собственными моделями восприятия Confidential
  • 48. СПАСИБО! Confidential