Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Аналитическое хранилище Avito.ru — от больших к...

AvitoTech
December 09, 2017

Аналитическое хранилище Avito.ru — от больших к очень большим данным — Артем Данилов (Avito)

На первый взгляд, проектирование хранилища данных — типовая задача: собрать требования, построить модель данных и реализовать ETL. Однако лавинообразный рост объема данных и их сложности легко может нарушить работоспособность хранилища. В докладе показано:

— как вслед за расширением бизнеса хранилище Avito за несколько лет выросло до 76 ТБайт;

— откуда вообще у компании большие данные;

— в чем состоят основные принципы аналитики;

— как эволюционировало хранилище Avito.ru.

Особое внимание уделено ответу на вопрос, почему следование ограничениям шестой нормальной формы (Anchor Modeling) помогает оперативно расширять хранилище, эффективно масштабировать нагрузку в среде MPP СУБД и развиваться в условиях микросервисов.

Avito Product Analytics Meetup
09/12/2017

AvitoTech

December 09, 2017
Tweet

More Decks by AvitoTech

Other Decks in Technology

Transcript

  1. Сайт объявлений №1 в России* ТОП-10 самых посещаемых сайтов Рунета

    39 миллиона активных объявлений 35 миллионов уникальных посетителей в месяц 50% просмотров с мобильных устройств Moscow St. Petersburg Novosibirsk N. Novgorod Kazan Samara Rostov Volgograd Voronezh Ufa Chelyabinsk Omsk Krasnoyarsk Vladivostok Yakutsk Irkutsk Khabarovsk • По данным ООО «ЛПСР» (LiveInternet.ru) в категории «Товары и услуги» на 30 августа 2016 года
  2. Изменения сущностей 01.01.2017 • 500$ • MacBook 02.01.2017 • 500$

    • MacBook Air 11 03.01.2017 • 400$ • MacBook Air 11
  3. Развитие хранилища данных 4 10 15 17 21 Cluster size

    (servers) 11 26 51 76 101 Cluster size (TB) 3 14 23 29 35 Integrated systems count
  4. Развитие хранилища данных 300 560 740 1 000 1 500

    0 200 400 600 800 1 000 1 200 1 400 1 600 Clickstream size (millions/day)
  5. • Ежедневное обновление • Live - connection Backoffice DB ClickStream

    • 1,5 миллиарда событий в день • Отставание от сайта ~ 30 минут ClickStream (4 месяца) • 400 таблиц • 180 млрд. строк Backoffice (вся история) • 1120 таблиц • до 2 млрд. строк Команда Avito 21 серверов, 101Tb данных Other Sources Все изменения каждые 2 часа Other • 1613 таблиц Не реже 1 раза в день Archive (>100TB)
  6. Количество таблиц 0 1000 2000 3000 4000 5000 6000 09.13

    10.13 11.13 12.13 01.14 02.14 03.14 04.14 05.14 06.14 07.14 08.14 09.14 10.14 11.14 12.14 01.15 02.15 03.15 04.15 05.15 06.15 07.15 08.15 09.15 10.15 11.15 12.15 01.16 02.16 03.16 04.16 05.16 06.16 07.16 08.16 09.16 10.16 11.16 12.16 01.17 02.17 03.17 04.17 05.17 06.17 anchors attributes ties total
  7. Anchor Modeling - 6NF Преимущества: § Автоматизированное расширение § Значительная

    экономия места (нет NULL и лишнего дублирования) § ETL не требует DELETE или UPDATE, что важно для колоночных БД Недостатки: • Сложность написания запросов • Большое количество таблиц обязательно требует наличие документации
  8. Пример добавления сущностей User Items Payment Click Search UserAgent Cookie

    Back office ClickStream Data Enrichment Device Browser Device Model
  9. Принципы аналитики Все данные хранятся в консистентном виде в DWH

    Почти в каждой команде есть как минимум один аналитик Аналитики знают SQL, Python и самостоятельно работают с хранилищем Большинство видов анализа занимает от минут до 2 часов Если анализ требует больше времени либо возникают сложности в написании запроса – привлекается Platform Team Platform team занимается поддержкой платформы, добавлением данных, исправлением ошибок и созданием витрин
  10. Подробнее о хранилище • Как мы считали трафик на Вертике

    — Голов Николай — http://www.highload.ru/2014/abstra cts/1570.html • От больших к очень большим данным — зачем нужна нормализация в Big Data? — Голов Николай - http://www.highload.ru/2015/abstracts/1878.html • Хранилище данных Avito: аналитика для микросервисной архитектуры — Данилов Артем - http://www.highload.ru/2017/abstracts/2864.html • События, события и ещё раз события. Опыт построения Event Stream Processing — Сухов Антон — http://ritfest.ru/2017/abstracts/2652.html