Хранилище данных
Хранилище данных (Data warehousing) - предметно-ориентированная информационная база данных, строится на базе СУБД и СППР. Данные, поступающие в хранилище данных, как правило, доступны только для чтения. Данные из OLTP-системы копируются в хранилище данных таким образом, чтобы при построении отчётов и OLAP-анализе не использовались ресурсы транзакционной системы и не нарушалась её стабильность.
Принципы организации хранилища
- Проблемно-предметная ориентация. Данные объединяются в категории и хранятся в соответствии с областями, которые они описывают, а не с приложениями, которые они используют.
- Интегрированность. Данные объединены так, чтобы они удовлетворяли всем требованиям предприятия в целом, а не единственной функции бизнеса.
- Некорректируемость. Данные в хранилище данных не создаются: то есть поступают из внешних источников, не корректируются и не удаляются.
- Зависимость от времени. Данные в хранилище точны и корректны только в том случае, когда они привязаны к некоторому промежутку или моменту времени.
Дизайн хранилищ данных
Существуют два архитектурных направления:
- нормализованные хранилища данных (таблицы) - данные находятся в предметно ориентированных таблицах 3NF. Для получения какой-либо информации нужно делать выборку из многих таблиц одновременно, что приводит к ухудшению производительности системы. Для решения этой проблемы используются денормализованные таблицы — витрины данных, на основе которых уже выводятся отчетные формы;
- хранилища с измерениями (куб данных, datacube) - используют схему «звезда» или схему «снежинка». При этом в центре «звезды» находятся данные (таблица фактов), а измерения образуют лучи звезды. Различные таблицы фактов совместно используют таблицы измерений, что значительно облегчает операции объединения данных из нескольких предметных таблиц фактов (пример — факты продаж и поставок товара). Таблицы данных и соответствующие измерения образуют архитектуру «шина». Измерения часто создаются в 3NF, в том числе, для протоколирования изменения в измерениях.
Данные в хранилище данных поступают из разных источников (реляционные БД, системы быстрых транзакций OLTP) после обработки ETL (Extract, Transform, Load). Для анализа данных используется OLAP-куб.