Введение в OLAP и хранилища данных

Архитектура Хранилищ данных

В материале рассматривается хранилище оперативных данных (Operational Data Store, ODS) как промежуточное звено между первичными системами и хранилищем данных (Data Warehouse, DW). Логика изложения: от проблемы редкой и тяжёлой загрузки DW к решению — ODS; затем к диспетчерам, составу данных и метаданных, средствам доступа и потокам данных. Показано, как ODS сокращает задержку актуализации и приближает аналитику к реальному времени.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. объяснять роль хранилища оперативных данных (Operational Data Store, ODS) в архитектуре хранилища данных;
2. описывать функции диспетчера загрузки, диспетчера хранилища и диспетчера запросов;
3. различать фактические данные, архивные резервные копии и метаданные;
4. анализировать входной, метапоток, нисходящий, восходящий и исходящий потоки данных;
5. сопоставлять инструменты доступа к данным с задачами разных групп пользователей;
6. оценивать влияние ODS, репликации и регламентов хранения на актуальность и доступность данных.
Показывать лекцию целиком
Краткое изложение

Хранилище оперативных данных и организация работы хранилища

Зачем нужно хранилище оперативных данных

Данные попадают в хранилище данных (Data Warehouse, DW) с определённой периодичностью. Но иногда задаче нужно более частое обновление. Например, к 15:00 сотрудники бэкенда и бизнес-аналитики должны видеть продажи первой половины дня. В самом DW сделать это сложно: загрузка тяжеловесна, выполняется часами и часто идёт в период недоступности, обычно ночью.

Поэтому важную роль играет хранилище оперативных данных (Operational Data Store, ODS). Оно почти в реальном времени пополняется из первичных источников. Как только в магазине появляется новая продажа, информация уже есть в ODS. Затем по определённому принципу — с сокращением объёма или с сохранением исходного вида — данные из ODS попадают в DW в течение периода обновления. Уже в 15:00 или даже в реальном времени можно передавать информацию из ODS в DW. Так ODS сокращает период актуализации данных.

Почему DW работает долго? Оно собирает весь пакет информации, проверяет, что обновилось и изменилось. Основная трудоёмкость — сравнить всё, что уже есть в DW, с базой данных, понять, что стало новым, забрать и загрузить это. С ODS задача проще: ODS фактически передаёт только то новое, что поступило после предыдущей загрузки. Такой информации немного, её можно оперативно загрузить в DW, не прерывая доступность хранилища. У ODS есть потенциал модернизировать систему до режима реального времени: получается онлайн-хранилище с минимальной задержкой относительно физического процесса.

Диспетчеры

Диспетчер загрузки загружает информацию из оперативных источников и ODS в хранилище. По пути он выполняет преобразования и агрегацию, если они нужны.

Диспетчер хранилища — внутренний диспетчер. Он управляет информацией внутри хранилища: анализирует непротиворечивость, преобразует и перемещает исходные данные из временной области в основные таблицы, создаёт индексы, выполняет денормализацию, агрегирование и резервное копирование. Он обеспечивает работу внутренних компонентов хранилища.

Диспетчер запросов управляет запросами пользователей. Он обеспечивает связь между хранилищем и пользователем и следит, чтобы выгрузка по заданным требованиям попала конечному пользователю.

Данные внутри хранилища

Фактические данные хранятся во внутренней части хранилища, описанной схемой. Они могут храниться в агрегированном виде; уровень агрегации может быть любым и даже нескольких уровней. Данные регулярно обновляются, если не потеряли актуальность с точки зрения истории: например, покупка остаётся, пока по ней не сделали возврат. Информация хранится до окончания периода хранения, затем отправляется в резервную копию. Например, продажи старше пяти лет не интересуют; когда срок подходит, запись уходит в архив и не видна в основном хранилище, но остаётся в архивной копии. Если запись актуальна, её не трогают. Новые продажи загружаются. Возможна модификация данных, если изменение произошло в оригинальном источнике. Фактические данные — база для анализа деятельности компании.

Архивные резервные копии нужны для зеркалирования и резервного копирования. Репликация обеспечивает отказоустойчивость: при сбое можно восстановиться, а во время отказа — подставить реплику вместо оригинального хранилища, чтобы не потерять текущий анализ.

Метаданные — это данные о данных. Там хранится, что это за информация, откуда она взялась, какой у неё бизнес-смысл, какие преобразования с ней сделали.

Средства доступа к данным

Пользователи взаимодействуют с хранилищем через разные инструменты.

Потоки данных

Во входном потоке данные выбираются из источников для загрузки в хранилище. Здесь же происходит очистка, преобразование по требованиям хранилища, добавление или удаление полей, при необходимости — денормализация. Проверяется непротиворечивость данных относительно того, что уже есть в хранилище.

Метапоток связан с перемещением метаданных. Когда меняется структура хранилища, описание полей и другое, изменения заносятся в метаданные. Метаданные связаны с диспетчером хранилища и источником: им нужно знать, откуда пришла информация, из какой базы, а в идеале — кто её заполнял.

Нисходящий поток обеспечивает резервное копирование и реплицирование, восстановление после отказа хранилища, чтобы не потерять информацию.

Восходящий поток обеспечивает агрегацию данных. С низкого уровня детализации данные поднимаются к высокому уровню агрегации, потому что для анализа не нужны все мельчайшие подробности. Здесь происходят агрегация, суммирование, документирование и распределение.

Исходящий поток обеспечивает доступ к данным для конечных пользователей и доставку этих данных. Пользователями могут быть топ-менеджеры, бизнес-аналитики, дата-сайентисты и другие группы. Одно дело — захотеть получить данные, другое — фактически получить их.

Краткие итоги

Практический смысл разделения оперативного и аналитического контуров состоит в управлении компромиссом между свежестью данных и устойчивостью тяжёлых аналитических процессов. Когда бизнесу нужна реакция быстрее, чем позволяет регламентная загрузка, промежуточный оперативный слой становится буфером: он принимает поток транзакций и отдаёт в основное хранилище только приращение. Это снижает нагрузку на сравнение полных массивов и позволяет не останавливать доступ к аналитике на время обновления.

Однако такая схема требует дисциплины: нужно понимать, какие данные считаются новыми, как проверяется их непротиворечивость и когда оперативный слой может передавать их дальше.

Роли диспетчеров показывают, что архитектура — не только набор таблиц. Загрузка, внутреннее управление и обслуживание запросов разделены, чтобы каждая функция имела зону ответственности. Если смешать их, возрастёт риск конфликтов между обновлением, агрегацией и пользовательскими запросами. Поэтому разделение операций создаёт основу для управляемости: преобразования, индексация, денормализация, агрегация и резервное копирование выполняются предсказуемо.

Отдельного внимания требует жизненный цикл данных. Актуальность, срок хранения, архивирование и возможная модификация из источника определяют, какие сведения остаются в основном хранилище, а какие уходят в резервные копии. Метаданные превращают этот процесс в прозрачный: они фиксируют происхождение, смысл и преобразования. Без них сложно доказать достоверность отчёта и понять, почему показатель изменился.

Репликация и резервное копирование дают не только восстановление после сбоя, но и возможность сохранить аналитический процесс при недоступности основного хранилища. Это практически важно там, где простой аналитики влияет на операционные решения. Наконец, разные инструменты доступа отражают разные уровни работы: отчёты и запросы, приложения, управленческие панели, OLAP-анализ и углублённое моделирование. Выбор инструмента должен соответствовать роли пользователя и характеру задачи, а не быть универсальным. В итоге ценность такой архитектуры проявляется в согласованном движении данных: от источника через оперативный слой, управляемое хранение и метаданные к доставке тем, кто принимает решения.

1. ODS

Хранилище оперативных данных (Operational Data Store, ODS) — промежуточный слой между первичными источниками и хранилищем данных (Data Warehouse, DW). DW загружается периодически, тяжело и часто ночью, когда доступ ограничен. Если бизнесу нужны свежие данные раньше, например продажи первой половины дня к 15:00, используют ODS. ODS почти в реальном времени пополняется из источников: новая продажа сразу попадает в ODS. Затем данные из ODS передаются в DW в течение периода обновления. ODS сокращает период актуализации и может приблизить хранилище к реальному времени.

DW долго работает потому, что сравнивает весь массив с источником и ищет изменения. ODS передаёт только приращение — то новое, что появилось после предыдущей загрузки. Поэтому загрузка в DW упрощается и не требует прерывать доступность.

2. Диспетчеры

Диспетчер загрузки загружает данные из оперативных источников и ODS в DW, при необходимости преобразует и агрегирует.

Диспетчер хранилища управляет внутренними операциями: анализ непротиворечивости, перемещение данных из временной области в основные таблицы, создание индексов, денормализация, агрегирование, резервное копирование.

Диспетчер запросов обеспечивает связь хранилища с пользователем и доставку выгрузки по требованиям.

3. Данные

Фактические данные хранятся во внутренней части хранилища по схеме. Могут иметь несколько уровней агрегации. Обновляются, если актуальны. Хранятся до окончания срока, затем уходят в архив/резервную копию (например, продажи старше пяти лет). Новые продажи загружаются; возможна модификация, если изменился источник. Это основа анализа.

Архивные резервные копии нужны для зеркалирования и восстановления. Репликация даёт отказоустойчивость: при сбое можно восстановиться или подменить хранилище репликой.

Метаданные — данные о данных: что это, откуда, бизнес-смысл, какие преобразования.

4. Доступ

5. Потоки

Входной: выборка из источников, очистка, преобразование, добавление/удаление полей, денормализация, проверка непротиворечивости.

Метапоток: изменение метаданных при изменении структуры и полей.

Нисходящий: резервное копирование, реплицирование, восстановление после отказа.

Восходящий: агрегация, суммирование, документирование, распределение; переход от детализации к агрегации.

Исходящий: доступ и доставка данных конечным пользователям — топ-менеджерам, аналитикам, дата-сайентистам.

Выводы

1. ODS сокращает задержку между появлением данных в источнике и их доступностью для анализа.
2. DW загружается тяжело, потому что сравнивает весь массив и ищет изменения; ODS передаёт только приращение.
3. ODS может приблизить хранилище к режиму реального времени без прерывания доступности.
4. Диспетчер загрузки переносит данные из источников и ODS в DW, выполняя преобразования и агрегацию.
5. Диспетчер хранилища отвечает за непротиворечивость, индексы, денормализацию, агрегацию и резервное копирование.
6. Диспетчер запросов связывает пользователя с хранилищем и обеспечивает выгрузку данных.
7. Фактические данные могут иметь несколько уровней агрегации и хранятся до окончания срока, затем архивируются.
8. Репликация и резервные копии обеспечивают отказоустойчивость и возможность подмены хранилища при сбое.
9. Метаданные описывают происхождение, смысл и преобразования данных.
10. Средства доступа делятся по задачам: отчёты, приложения, EIS, OLAP и глубокий анализ.
11. Входной поток очищает и преобразует данные, проверяет непротиворечивость.
12. Восходящий поток агрегирует, нисходящий — резервирует, исходящий — доставляет данные пользователям.

Вопросы для самопроверки

1. Почему регламентной загрузки DW может не хватать для операционных задач?
2. Какую роль выполняет ODS между первичными источниками и DW?
3. За счёт чего ODS позволяет загружать данные в DW без прерывания доступности?
4. Чем задачи диспетчера загрузки отличаются от задач диспетчера хранилища?
5. Какие операции выполняет диспетчер хранилища?
6. Что обеспечивает диспетчер запросов?
7. Как хранятся фактические данные и что влияет на их архивирование?
8. Для чего нужны архивные резервные копии и репликация?
9. Что такое метаданные и какие сведения в них хранятся?
10. Какие инструменты доступа к данным существуют и для каких пользователей они предназначены?
11. Какие операции происходят во входном и метапотоке?
12. В чём различие восходящего, нисходящего и исходящего потоков?
Вернуться к учебному плану