Введение в СУБД учебный курс Сабитов Андрей Альбертович [email protected], р.т. 326 94 81 Пирогов Сергей Анатольевич [email protected] Новосибирский Государственный Университет Физический факультет, кафедра ФТИ Data WareHause Хранилища данных @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» Хранение данных в организациях Использование централизованного места хранения данных на предприятии удобно и логично. Служащие: Менеджеры Руководители веб-сервер Клиенты Простые работники Система Обработки и Хранения Данных Производство Бухгалтерия Базы данных типичного предприятия, которые нами рассматривались всё это время, имеют как правило от нескольких десятков до нескольких сотен таблиц. @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» Сегодня работа многих организаций связана с достаточно большими объемами данных. Проблемы хранение и обработка накопленной информации становятся все более актуальными и востребованными. Типичные объемы документооборота среднего предприятия: SELECT OBJECT_TYPE, COUNT(*) AS n FROM DBA_OBJECTS WHERE OWNER = '...' GROUP BY OBJECT_TYPE HAVING OBJECT_TYPE = 'VIEW' OR OBJECT_TYPE = 'TABLE'; OBJECT_TYPE N -------------------- -----TABLE 233 VIEW 24 Что произойдёт, если объём данных будет расти? 3 Разделение данных Когда данных много это хорошо или плохо? ● Pro — если данных много, можно попробовать их анализировать и найти ценную неочевидную на первый взгляд информацию. Например, если это база транспортной компании, хранящая данные о грузоперевозках, можно определить характерные габариты перевозимых грузов, что позволит правильно планировать покупку новой техники. База сети кинотеатров, с данными о показанных фильмах, проданных билетах и т. п., позволит планировать репертуар, время сеансов. ● Contra — т. к. таблицы сильно нормализованны, а для проведения статистического анализа надо много данных, мы получим запросы, характеризующиеся высокой степенью связности, которые возвращают большие объёмы данных. Т. е. запросы, которые потребляют огромное количество системных ресурсов, что очень плохо для производительности системы в целом. Вывод: Надо разделять оперативные и архивные данные! @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 4 OLTP OLTP (aнгл. Online Transaction Processing, транзакционная система) – обработка транзакций в реальном времени. Способ организации БД, при котором система работает с небольшими по размерам транзакциями, но идущими большим потоком, и при этом клиенту требуется от системы минимальное время отклика. ● ● Особенности: сильно нормализованная структура данных, транзакционный подход к операциям, данные обрабатываются в реальном времени. Преимущества и недостатки: высокая надежность, оптимизированы под небольшие транзакции, запросы, а не для аналитических запросов (затрагивающий большой объем информации). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 5 OLAP OLAP (англ. online analytical processing, аналитическая обработка в реальном времени) – технология обработки данных, заключающаяся в подготовке суммарной (агрегированной) информации на основе больших массивов данных, структурированных по многомерному принципу. ● ● ● Особенности: предметная ориентация, высокоскоростные, в основу легли 12 принципов сформулированные Кодд. Существуют три типа OLAP: ● многомерная OLAP (Multidimensional OLAP – MOLAP); ● реляционная OLAP (Relational OLAP – ROLAP); ● гибридная OLAP (Hybrid OLAP – HOLAP). Преимущества и недостатки: преимущества и недостатки. @Сабитов А.А. & @Пирогов С.А. & @НГУ каждый «Введение в СУБД» отдельный тип имеет свои 6 Сравнение OLTP- и OLAP- систем Сравнение оперативных баз данных и баз данных СППР (система поддержки принятия решений): Характеристика базы данных Содержимое Структура данных Типичный размер таблиц Схема доступа Количество строк, к которым обращается один запрос @Сабитов А.А. & @Пирогов С.А. & @НГУ База данных OLTP (оперативная обработка транзакций) База данных OLAP (хранилище данных, деловой анализ) Текущие данные Архивные данные, за долгий период времени Структура таблиц соответствует структуре транзакций Структура таблиц понятна и удобна для написания аналитических запросов Тысячи строк Миллионы строк Произвольная; зависит от того, какая именно задача Предопределена для каждого стоит перед пользователем в типа обрабатываемых данный момент и какие транзакций сведения нужны для ее решения Десятки «Введение в СУБД» От тысяч до миллионов 7 Сравнение OLTP- и OLAP- систем Сравнение оперативных баз данных и баз данных СППР (система поддержки принятия решений): База данных OLTP (оперативная обработка транзакций) База данных OLAP (хранилище данных, деловой анализ) Рядовые сотрудники / клерки Руководители высшего звена / аналитики С отдельными строками С группами строк (итоговые запросы) Большое количество бизнестранзакций в минуту или в секунду На выполнение запросов требуется время: минуты или даже часы Тип доступа Выборка, вставка и обновление Выборка данных (почти 100 % операций) Чем определяется производительность Время выполнения транзакции Время выполнения запроса Характеристика базы данных Типичные пользователи С какими данными работает приложение Интенсивность обращений к базе данных @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 8 ETL-процесс Если мы делим данные, на оперативные и архивные, можно (и нужно!) при переносе оперативных данных в архив готовить их к удобному использованию при анализе. Перенос архивных данных в архив выполняется в три стадии: ● ● ● извлечение данных из источников данных, в качестве которых могут выступать как наши собственные OLTP-системы, так и сторонние источники информации произвольной природы: внешние базы данных, к которым есть доступ у организации, веб-сайты и т. д. трансформация данных к виду, в котором они будут храниться в хранилище данных. На этой же стадии выполняется очистка данных от противоречивых, неполных и ошибочных данных. загрузка данных в хранилище данных. Данный процесс называется ETL-процессом (от англ. Extract, Transform, Load – «извлечение, преобразование, загрузка»). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 9 Aрхитектура типового хранилища данных В общем виде, архитектура типового хранилища данных можно представить в следующем виде: Наши собственные OLTP-системы Прочие источники данных Извлечение данных Extraction Временная промежуточная БД Transformation Добавление новых данных Loading Data Warehouse @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 10 Гиперкуб Пример гиперкуба Чтобы понимать, к какому виду преобразовывать входные данные, надо понимать как эти данные будут представлены конечному пользователю (аналитику). Аналитикам удобно представлять данные в виде гиперкубов данных (кубов данных). На картинке указаны основные понятия, связанные с гиперкубами. Это не кубы с точки зрения математики, но название устоявшееся! @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 11 Гиперкуб Пример двумерного гиперкуба представлен на таблице. Её верхняя строка и левый столбец имеют семантику координаты, и называются в OLAP измерение. Пример гиперкуба Жигули Москвич Волга Июнь Июль Август 12 24 5 2 18 19 Ячейка гиперкуба содержит набор фактов (мер), относящихся к данным координатам. Под фактом здесь подразумевается некоторая измеряемая величина: объем продаж, число принятых абитуриентов и т.п. @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 12 Операции на гиперкубами Над геперкубами определены четыре операции: ● ● ● Операция срез (Slice) – это операция построения подмножества гиперкуба, путем фиксации значений одного или более измерений. Операция построения среза проводится с целью отсечения «ненужных» значений. Операция вращения (Rotate) – изменение порядка измерений при визуализации. Вращение даёт возможность представлять данные в форме, наиболее удобной для их восприятия. Операции свертки и детализации – получение на основе детальных данных более агрегированных данных, и наоборот. @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 13 Куб и реляционная модель Хранилище данных может быть построено на основе нереляционной СУБД. Это особенно удобно, если такая СУБД имеет встроенную поддержку абстракции гиперкуба. Модель Месяц Объем Жигули Июнь 12 Жигули Июль 24 Жигули Август 5 Москвич Июнь 2 Москвич Июль 18 Волга Июль 19 Если для хранилища данных выбирается одна из реляционных СУБД, то гиперкуб можно легко представить в реляционном виде, как показано в таблице. Колонки, содержащие координаты ячейки данных в гиперкубе называются колонкамиразмерностями, а колонки содержащие измеряемые величины – колонками фактов. Саму такую таблицу называют таблицей фактов (fact table). Для контроля за допустимыми значениями размерностей, для каждой из размерностей, создаётся соответствующая таблица размерностей (dimession table). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 14 ER-диаграмма хранилищ данных Типичная для хранилищ данных ERдиаграмма. @Сабитов А.А. & @Пирогов С.А. & @НГУ Из-за характерного вида, ее принято называть star-схемой. «Введение в СУБД» 15 Диаграмма-снежинка Если размерность позволяет агрегировать ее значения в более крупные «единицы измерения», то для соответствующей агрегации создаётся дополнительная таблица размерностей. Например, дату можно агрегировать в дни недели, а недели можно агрегировать в номера недель с начала года. Второй возможный путь агрегации – цепочка агрегаций в месяцы, кварталы, полугодия, года. Таким образом. возле таблицы размерностей может возникнуть веер связей с агрегированными размерностями. В таком случае ER-диаграмму называют диаграммой-снежинкой (snowflake schema). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 16 Data Mart Хранилище данных является единственным источником данных для организации, и содержит всю необходимую информацию для этого. Что делать если есть много пользователей хранилища данных? ● Во-первых, надо обеспечить права доступа, чтобы пользователи не видели данные, которые им не нужны для работы. Data Warehouse ● ETL Data Mart Во-вторых, надо обеспечить производительность системы. Data Mart Для этого создают маленькие тематические хранилища данных в интересах определённого круга пользователей – киоски данных (Data Mart). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 17 Уровни данных Есть четыре уровня данных: ● ● ● ● Оперативные в OLTP-системах Максимально подробные данные, но нет истории. Архивные в хранилищах данных Максимально детализированные, есть история, очень подробные данные, но их очень много. Агрегированные выборки из хранилищ данных, хранящиеся в киосках данных Есть история, но данные обобщенные, без подробностей, их не много. Можно быстро проверить гипотезу. Если надо детальную информацию – лезем в хранилище данных. Максимально агрегированные (временные) данные Хранятся у пользователя на компьютере (результаты запросов к киоскам данных и хранилищу данных). @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 18 Жизненный цикл Организация ХД Вспомним из главы про проектирование. Классический цикл развития проекта: разобрались, что нам надо, подумали, как будем делать, сделали, стали использовать. По результатам использования понимаем, что требуется изменить. Выявление тенденций Создание СППР и программ на основе ХД Анализ требований Анализ и определение требований Проектирование Реализация и отладка Эксплуатация @Сабитов А.А. & @Пирогов С.А. & @НГУ Жизненный цикл развития хранилищ данных: Начинаем собирать данные, смотрим, что получается, пытаемся их использовать, понимаем, каких данных «не хватает для счастья», вносим изменения в хранилище. Перевёрнутый цикл определяется тем, что данные ставятся во главу угла. «Введение в СУБД» 19 Создание хранилища данных Аналогия для хранилищ данных: Утрированный подход к созданию классических программ: ● ● ● 1. Создаём простейшую тематическую коллекцию данных. Напишите программу «Hello World!» Поправьте, чтобы программа читала строку из файла и писала её на экран Поправьте, чтобы … За конечное число итераций можно получить систему любой сложности. Суть подхода: начинаем с простой системы и постепенно её усложняем. 2. Дополняем её данными из разных источников. 3. Повторяем эти процедуры для разных тематик. 4. Получаем набор киосков данных, консолидируем их в ХД. Это важно! Т. к. иначе высока вероятность провала, а цена вопроса: „The average data warehouse takes three years to build and costs $3-5 million … 85% of all data warehouse projects fall short of their objectives, and 40% fail completely.” (Аннотации к книге MossData Warehouse Project Managemen, S. Adelman, L. Terpeluk) @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 20 Контрольные вопросы. Обсуждение ● Что такое хранилище данных? ● Зачем нужны хранилища данных? Какие задачи решает? ● Расскажите о OLTP и OLAP подходах. Какие между ними отличия? ● Что такое ETL-процесс? ● Что называется гиперкубом? Какие операции над гиперкубом вы знаете? ● Какую ER-диаграмму называют диаграмма-снежинка? ● Что такое star-схема? ● Расскажите о киосках данных (data mart). Зачем они нужны? ● Какой жизненный цикл имеет разработка хранилища данных? Какие отличия от разработки обычного ИТ проекта? @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 21 Список литературы ● ● ● ● ● ● ● Sid Adelman, Larissa T. Moss. «Data Warehouse Project Management» // Addison-Wesley, 2000. Codd E. F., Codd S. B., Salley C. T. Providing OLAP to User-Analysts: An IT Mandate, Arbor Software Corp. Papers, 1996. Л. Хоббс, С. Хилсон, Ш. Лоуенд «Oracle9iR2: разработка и эксплуатация хранилищ баз данных» // Практическое пособие, – М: КУДИЦ-Образ, 2004. – 586 c. С. Я. Архипенков, Д. В. Голубев, О. Б. Максименко «Хранилища данных» // – М: ДиалогМИФИ, 2002. – 528 c. В. Е. Туманов, С. В. Маклаков «Проектирование реляционных хранилищ данных» // – М: Диалог-МИФИ, 2007. – 336. Paulraj Ponniah. «Data Warehousing Fundamentals: A Comprehensive Guide for IT Professionals.» Wiley-Interscience Publication. // 2001. – 544 c. Eben Hewitt. «Cassandra: The Definitive Guide.» O’Reilly. // 2011. – 330 c. @Сабитов А.А. & @Пирогов С.А. & @НГУ «Введение в СУБД» 22