CodeFest 2013. Чернышев А. — Пути миграции перелётных данных

Preview:

DESCRIPTION

http://2013.codefest.ru/doklad/44

Citation preview

Чернышев  Артём, 2ГИС

Пути  миграции  перелётных  данных

Миграция  это  - ETL

Миграция  это  - ETL

Extract

Миграция  это  - ETL

Extract Transform

Миграция  это  - ETL

Extract Transform Load

Откуда  я  знаю  про  миграцию Data warehousing

Откуда  я  знаю  про  миграцию Business Intelligence

Откуда  я  знаю  про  миграцию Big Data Management

Покажу  на  примере

Самый  первый  пример

Самый  первый  пример

• Есть  логи скачиваний  пакетов  с  сервера

Самый  первый  пример

• Есть  логи скачиваний  пакетов  с  сервера

• …  но  они  в  бинарном  виде  

Самый  первый  пример

• Есть  логи скачиваний  пакетов  с  сервера

• Нужен  отчёт  заданного  вида  в  excel

• …  но  они  в  бинарном  виде  

Самый  первый  пример

• Есть  логи скачиваний  пакетов  с  сервера

• Нужен  отчёт  заданного  вида  в  excel

• …  но  они  в  бинарном  виде  

• Каждый  первый  понедельник  месяца

Самый  первый  пример

Самый  первый  пример@Чудеса Сервер  доставлял  не  сразу

Два горячих чая этому господину

Самый  первый  пример@Чудеса Изменилась  периодичность

Самый  первый  пример@Чудеса Увеличился  объём  данных

Самый  первый  пример@Чудеса Вид  отчёта  постоянно  менялся

Самый  первый  пример@Выводы Никому  не  верь

Умей  отличить  заказчика  от  пользователя Самый  первый  пример@Выводы

Знай  роль  данных  в  бизнес-процессах Самый  первый  пример@Выводы

Мигрируй  чаще Самый  первый  пример@Выводы

Самый  первый  пример Периодичность

Самый  первый  пример Периодичность

Самый  первый  пример Актуальность

Самый  первый  пример

• Понавставляли timestamp’ы  

• Начали  лить  в  RDBMS

• Разделили  миграцию  и  представление

• Миграция  по  расписанию

Работа  над  ошибками

• Начали  общаться  с  пользователями

Второй  пример

Второй  пример

• Появились  клики

Второй  пример

• Много  других  новых  метрик

• Появились  клики

Второй  пример

• Много  других  новых  метрик

• Появились  клики

• Необходима  связь  со  справочниками

Второй  пример

• Много  других  новых  метрик

• Появились  клики

• Стало  больше  пользователей

• Необходима  связь  со  справочниками

Второй  пример

Второй  пример@Чудеса MySql не  любит,  когда  много  данных

Второй  пример@Чудеса Данные  стали  критичными  для  бизнеса

Второй  пример@Чудеса Больше  данных  – больше  ошибок

Второй  пример@Выводы Важные  данные  нужно  проверять

Второй  пример@Выводы Важные  данные  нужно  надёжно  хранить

Второй  пример@Чудеса Управлять  данными  в  коде

Второй  пример@Выводы Используй  верные  инструменты

Второй  пример@Выводы Используй  верные  инструменты

Один  источник

Второй  пример@Выводы Используй  верные  инструменты

Один  источник

Одно  назначение +

Второй  пример@Выводы Используй  верные  инструменты

Один  источник

Одно  назначение +

= Простая  логика

+

Второй  пример@Выводы Используй  верные  инструменты

Один  источник

Одно  назначение +

= SQL - скрипт

Простая  логика +

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

=

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= ETL Tools (тысячи  их)

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= ETL Tools (тысячи  их)

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= ETL Tools (тысячи  их)

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= ETL Tools (тысячи  их)

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= Real - time

+

Второй  пример@Выводы Используй  верные  инструменты

Много  источников

Много  назначений +

= Message Broker

Real - time +

Второй  пример@Выводы Используй  верные  инструменты

Во  всех  остальных  случаях

Пишите  код,  пожалуйста

Второй  пример Доступность

Когда  просят

Когда  сможем

VS

Второй  пример Достоверность

Второй  пример Ценность

Второй  пример

• Миграцию  перевели  на  SSIS

• Перешли  на  MS SQL Server

• Смастерили  систему  проверок

• Начали  формализовывать  требования

Работа  над  ошибками

Чужой  пример

Чужой  пример

• Жила-была  престарелая  CRM

Чужой  пример

• Много  баз  дислокации

• Жила-была  престарелая  CRM

Чужой  пример

• Много  баз  дислокации

• Жила-была  престарелая  CRM

• Решили  сделать  новую

Чужой  пример

• Много  баз  дислокации

• Жила-была  престарелая  CRM

• Решили  сделать  новую

• С  одинокой  базёнкой

Чужой  пример

• Много  баз  дислокации

• Жила-была  престарелая  CRM

• Решили  сделать  новую

• С  одинокой  базёнкой

• Совершить  миграцию  поручили  DBA

Чужой  пример

Старая  CRM Новая  CRM

Пакет  SSIS

Чужой  пример@Чудеса DBA не  понимает  бизнес-логику

Чужой  пример@Чудеса Проблемы  выявлялись  не  сразу

Чужой  пример@Чудеса Проблемы  решались  долго

Чужой  пример@Выводы Исполнитель  должен  быть  в  контексте

Чужой  пример@Выводы

Много  сущностей

Чужой  пример@Выводы

Много  сущностей

Много  данных +

Чужой  пример@Выводы

Много  сущностей

Много  данных +

= Много  бизнес-логики

+

Чужой  пример@Выводы

Много  сущностей

Много  данных +

= Промежуточная  база

Много  бизнес-логики +

Чужой  пример@Выводы Делай  все  возможные  констрэйнты

Чужой  пример   Целостность

Хороший  пример

Хороший  пример

• Жила-была  старая  карта

Хороший  пример

• Так  же  много  баз  дислокации

• Жила-была  старая  карта

Хороший  пример

• Так  же  много  баз  дислокации

• Жила-была  старая  карта

• Сделать  новую  карту  с  одной  базой

Хороший  пример

• Так  же  много  баз  дислокации

• Жила-была  старая  карта

• Сделать  новую  карту  с  одной  базой • Миграцию  для  прототипа  делал  разработчик

Хороший  пример

Старая  карта Новая  карта

Хороший  пример@Кусок  кода

Хороший  пример@Всё  в  память

Хороший  пример@Переписал

Хороший  пример

• Стали  выходить  из  прототипа

Хороший  пример

• Изменили  модель  данных  на  EAV

• Стали  выходить  из  прототипа

Хороший  пример

• Изменили  модель  данных  на  EAV

• Стали  выходить  из  прототипа

• Нужно  было  переписать  миграцию

Хороший  пример

…  и  написать  пакет  SSIS

Хороший  пример

Хороший  пример@Вывод

Итого@Требования

Итого@Требования

• Периодичность

Итого@Требования

• Актуальность • Периодичность

Итого@Требования

• Доступность • Актуальность • Периодичность

Итого@Требования

• Доступность • Актуальность • Периодичность

• Достоверность

Итого@Требования

• Доступность • Актуальность • Периодичность

• Достоверность • Ценность

Итого@Требования

• Доступность • Актуальность • Периодичность

• Достоверность • Ценность • Целостность

Конец

Чернышев  Артём, 2ГИС

cai@2gis.ru @chernyshev_art

Вопросы?

Recommended