Хранилище оперативных данных и организация работы хранилища
Зачем нужно хранилище оперативных данных
Данные попадают в хранилище данных (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 в хранилище. По пути он выполняет преобразования и агрегацию, если они нужны.
Диспетчер хранилища — внутренний диспетчер. Он управляет информацией внутри хранилища: анализирует непротиворечивость, преобразует и перемещает исходные данные из временной области в основные таблицы, создаёт индексы, выполняет денормализацию, агрегирование и резервное копирование. Он обеспечивает работу внутренних компонентов хранилища.
Диспетчер запросов управляет запросами пользователей. Он обеспечивает связь между хранилищем и пользователем и следит, чтобы выгрузка по заданным требованиям попала конечному пользователю.
Данные внутри хранилища
Фактические данные хранятся во внутренней части хранилища, описанной схемой. Они могут храниться в агрегированном виде; уровень агрегации может быть любым и даже нескольких уровней. Данные регулярно обновляются, если не потеряли актуальность с точки зрения истории: например, покупка остаётся, пока по ней не сделали возврат. Информация хранится до окончания периода хранения, затем отправляется в резервную копию. Например, продажи старше пяти лет не интересуют; когда срок подходит, запись уходит в архив и не видна в основном хранилище, но остаётся в архивной копии. Если запись актуальна, её не трогают. Новые продажи загружаются. Возможна модификация данных, если изменение произошло в оригинальном источнике. Фактические данные — база для анализа деятельности компании.
Архивные резервные копии нужны для зеркалирования и резервного копирования. Репликация обеспечивает отказоустойчивость: при сбое можно восстановиться, а во время отказа — подставить реплику вместо оригинального хранилища, чтобы не потерять текущий анализ.
Метаданные — это данные о данных. Там хранится, что это за информация, откуда она взялась, какой у неё бизнес-смысл, какие преобразования с ней сделали.
Средства доступа к данным
Пользователи взаимодействуют с хранилищем через разные инструменты.
- Инструменты создания отчётов и запросов формируют итоговый отчёт и позволяют наполнять его реальными данными.
- Инструменты разработки приложений нужны, потому что приложения интегрируются с хранилищем как с центральным источником информации.
- Исполнительная информационная система (Executive Information System, EIS) предназначена для руководства и топ-менеджмента. Она показывает верхнеуровневый текущий срез по компании, без внутренней структуры хранилища.
- Инструменты оперативно-аналитической обработки (On-Line Analytical Processing, OLAP) работают на базе OLAP-кубов. Они позволяют наглядно, быстро и оперативно смотреть данные в разных разрезах и делать сложные выборки.
- Глубокий интеллектуальный анализ на базе машинного обучения и искусственного интеллекта.
Потоки данных
Во входном потоке данные выбираются из источников для загрузки в хранилище. Здесь же происходит очистка, преобразование по требованиям хранилища, добавление или удаление полей, при необходимости — денормализация. Проверяется непротиворечивость данных относительно того, что уже есть в хранилище.
Метапоток связан с перемещением метаданных. Когда меняется структура хранилища, описание полей и другое, изменения заносятся в метаданные. Метаданные связаны с диспетчером хранилища и источником: им нужно знать, откуда пришла информация, из какой базы, а в идеале — кто её заполнял.
Нисходящий поток обеспечивает резервное копирование и реплицирование, восстановление после отказа хранилища, чтобы не потерять информацию.
Восходящий поток обеспечивает агрегацию данных. С низкого уровня детализации данные поднимаются к высокому уровню агрегации, потому что для анализа не нужны все мельчайшие подробности. Здесь происходят агрегация, суммирование, документирование и распределение.
Исходящий поток обеспечивает доступ к данным для конечных пользователей и доставку этих данных. Пользователями могут быть топ-менеджеры, бизнес-аналитики, дата-сайентисты и другие группы. Одно дело — захотеть получить данные, другое — фактически получить их.
Краткие итоги
Практический смысл разделения оперативного и аналитического контуров состоит в управлении компромиссом между свежестью данных и устойчивостью тяжёлых аналитических процессов. Когда бизнесу нужна реакция быстрее, чем позволяет регламентная загрузка, промежуточный оперативный слой становится буфером: он принимает поток транзакций и отдаёт в основное хранилище только приращение. Это снижает нагрузку на сравнение полных массивов и позволяет не останавливать доступ к аналитике на время обновления.
Однако такая схема требует дисциплины: нужно понимать, какие данные считаются новыми, как проверяется их непротиворечивость и когда оперативный слой может передавать их дальше.
Роли диспетчеров показывают, что архитектура — не только набор таблиц. Загрузка, внутреннее управление и обслуживание запросов разделены, чтобы каждая функция имела зону ответственности. Если смешать их, возрастёт риск конфликтов между обновлением, агрегацией и пользовательскими запросами. Поэтому разделение операций создаёт основу для управляемости: преобразования, индексация, денормализация, агрегация и резервное копирование выполняются предсказуемо.
Отдельного внимания требует жизненный цикл данных. Актуальность, срок хранения, архивирование и возможная модификация из источника определяют, какие сведения остаются в основном хранилище, а какие уходят в резервные копии. Метаданные превращают этот процесс в прозрачный: они фиксируют происхождение, смысл и преобразования. Без них сложно доказать достоверность отчёта и понять, почему показатель изменился.
Репликация и резервное копирование дают не только восстановление после сбоя, но и возможность сохранить аналитический процесс при недоступности основного хранилища. Это практически важно там, где простой аналитики влияет на операционные решения. Наконец, разные инструменты доступа отражают разные уровни работы: отчёты и запросы, приложения, управленческие панели, 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. Доступ
- Отчёты и запросы: создание отчётов и наполнение данными.
- Разработка приложений: интеграция приложений с хранилищем как центральным источником.
- Executive Information System (EIS): для топ-менеджмента, верхнеуровневый текущий срез.
- OLAP: кубы, разные разрезы, сложные выборки.
- Глубокий анализ: машинное обучение и искусственный интеллект.
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. В чём различие восходящего, нисходящего и исходящего потоков?