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

Сравнение OLTP и Хранилищ данных

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

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

В результате изучения лекции слушатель будет способен:
1. Объяснять различие между OLTP-системой и хранилищем данных по назначению, данным и характеру обработки.
2. Различать текущие и исторические данные, детализированные и агрегированные сведения.
3. Определять, какие задачи требуют регламентированной транзакционной обработки, а какие — нерегламентированного анализа.
4. Описывать роль человека в OLTP-системе и хранилище данных.
5. Сопоставлять типы запросов, подходящие для операционной базы и для хранилища.
6. Обосновывать необходимость раздельного использования OLTP-систем и хранилищ в одной компании.
Показывать лекцию целиком
Краткое изложение

1. Назначение и характер данных

Оперативная обработка транзакций (OLTP, On-Line Transaction Processing) содержит текущие данные: продажи, операции и другие сведения, связанные с постоянными однотипными транзакциями. Транзакция здесь — повторяющаяся операция, которая в течение дня выполняется множество раз и записывается в базу.

Хранилище данных (Data Warehouse, DW) работает с историческими данными: как правило, за период до вчерашнего дня включительно. Оно не занимается поглощением новой информации в режиме онлайн.

2. Детализация и обобщение

OLTP хранит подробные сведения. Хранилище тоже может хранить детали, но чаще работает с частично или полностью обобщёнными данными. Например, для анализа может быть важна не конкретная продажа в конкретном магазине, а категория товара. Тогда первичные данные агрегируются (обобщаются) до уровня категории. Задача хранилища — быстро обобщать данные по иерархии предметной области и бизнес-процессов.

3. Динамика и статика

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

4. Регламентация обработки

В OLTP способ обработки повторяющийся: заранее написанные программные коды изо дня в день выполняют одни и те же действия. Например, продажа запускает запись в базу, затем триггер (trigger) уменьшает остаток товара, после чего может формироваться заказ на дополнительную закупку. В хранилище обработка не регламентирована: запросы и сценарии анализа заранее не фиксируются.

5. Роль человека

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

6. Интенсивность транзакций

Интенсивность обработки транзакций в OLTP высокая. В хранилище она средне-низкая, потому что хранилище не ориентировано на постоянную запись транзакций.

7. Использование данных

В OLTP использование данных предсказуемо: заранее известно, куда попадёт значение из столбца, где и как оно будет использовано. В хранилище это предсказать нельзя. Часть данных может вообще никогда не использоваться, хотя предполагалось, что она понадобится.

8. Прикладная и предметная ориентация

OLTP ориентирована на прикладные области: её задача — обслуживать прикладные системы, оптимизировать внутренние процессы, экономно хранить информацию и быстро выполнять вставку (insert) новых данных. Хранилище ориентировано на предметную область — на суть бизнес-задачи. OLTP поддерживает повседневные решения, хранилище — стратегические.

9. Горизонт планирования и количество систем

В OLTP, как правило, у каждого бизнес-процесса, департамента или отдела может быть своя база данных, чтобы процессы не мешали и не конфликтовали. Хранилище — одно единое: оно собирает информацию из всех источников. OLTP подходит для интенсивной обработки заранее спроектированных, многократно повторяющихся транзакций, преимущественно связанных с обновлением данных. Хранилище — для относительно небольшого количества транзакций непредсказуемого характера и для ответов на произвольные, неструктурированные, эвристические (heuristic) запросы.

10. Пользователи

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

11. Примеры запросов

OLTP не предназначена для быстрого ответа на произвольные запросы. Нестандартный нерегламентированный запрос к базе может выполняться очень долго, а его часто приходится писать с нуля. Стандартный запрос, например о средней цене объектов недвижимости в крупнейших городах Великобритании, может выполняться быстро. Хранилище позволяет отвечать на более сложные запросы. Пример: как повышение юридических издержек на 3,5% и снижение государственных налогов на 1,5% при сделках с недвижимостью стоимостью выше 100 000 фунтов стерлингов повлияет на продажи в разных регионах Британии. Это условный прогнозный вопрос с множеством факторов.

12. Итог сравнения

OLTP и хранилище данных — концептуально разные подходы. У них разное предназначение, но в одной компании, как правило, используются оба. База решает текущие операционные задачи, хранилище — аналитические и стратегические.

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

Практический смысл различия между оперативной системой и хранилищем раскрывается через вопрос: для чего данные собираются и как долго они должны оставаться полезными. Если речь идёт о ежедневном потоке операций, приоритетом становится предсказуемость, скорость записи и сохранение детализации. Такая среда требует строгих сценариев, автоматических реакций и дисциплины сопровождения. Её ценность — в точном обслуживании текущих процессов, а не в поиске новых смыслов. Напротив, аналитическая среда начинается там, где появляется потребность в истории, обобщении и проверке гипотез. Здесь данные могут быть менее детализированными, зато должны выдерживать разнообразные срезы, сравнения и прогнозные вопросы. Свобода запросов становится не избыточностью, а условием развития. Поэтому смешение этих ролей в одной системе создаёт конфликт: операционная нагрузка мешает аналитике, а аналитические эксперименты угрожают стабильности повседневных операций. Разделение позволяет каждой стороне оптимизироваться под свою задачу. Операционная система выигрывает в надёжности и скорости транзакций, хранилище — в широте анализа и качестве стратегических решений. Важно и то, что данные в хранилище не просто копируются: они проходят путь от детализированного учёта к агрегатам, пригодным для управленческих выводов. Чем яснее выстроена иерархия предметной области, тем быстрее можно получить ответ на сложный вопрос. Практическое применение такого подхода — не только техническая архитектура, но и распределение ответственности. Операционные сотрудники работают с повторяющимися процессами, аналитики — с исследованием и интерпретацией. Руководители получают основу для долгосрочных решений, а не только отчёт о вчерашних операциях. В итоге выбор между операционной системой и хранилищем не является выбором «лучшего» инструмента. Это выбор разных режимов работы с данными: один поддерживает ежедневную устойчивость, другой — стратегическую адаптацию. Их совместное присутствие в компании отражает естественное разделение между исполнением и анализом, между текущим контролем и развитием.

OLTP (On-Line Transaction Processing; оперативная обработка транзакций) и хранилище данных (Data Warehouse, DW) — разные подходы к работе с данными.

  1. Назначение и данные. OLTP содержит текущие данные: продажи и другие постоянные однотипные транзакции. Хранилище работает с историческими данными, обычно за период до вчерашнего дня. OLTP хранит детали; хранилище может хранить детали, но чаще использует частично или полностью обобщённые данные.

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

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

  4. Обработка. В OLTP обработка повторяющаяся и регламентированная. Например, после продажи запись попадает в базу, триггер уменьшает остаток товара, затем может формироваться заказ на закупку. В хранилище обработка нерегламентирована: аналитик сам задаёт запросы и экспериментирует.

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

  6. Транзакции. Интенсивность обработки транзакций в OLTP высокая. В хранилище она средне-низкая, потому что хранилище не ориентировано на постоянную запись.

  7. Использование данных. В OLTP использование данных предсказуемо: известно, куда попадёт значение и как оно будет использовано. В хранилище это предсказать нельзя; часть данных может вообще не понадобиться.

  8. Ориентация. OLTP ориентирована на прикладные области: обслуживает прикладные системы, оптимизирует внутренние процессы, экономно хранит информацию и быстро выполняет вставку новых данных. Хранилище ориентировано на предметную область — на суть бизнес-задачи.

  9. Поддержка решений. OLTP поддерживает повседневные решения. Хранилище — стратегические решения на горизонте планирования.

  10. Архитектура и пользователи. В OLTP, как правило, у каждого бизнес-процесса или отдела может быть своя база данных. Хранилище — одно единое, собирающее информацию из всех источников. OLTP обслуживает много параллельных пользователей-исполнителей. Хранилище — небольшое число руководителей и бизнес-аналитиков.

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

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

Выводы

1. OLTP хранит текущие данные и обслуживает постоянные однотипные транзакции.
2. Хранилище работает с историческими данными и не занимается онлайн-записью новых операций.
3. OLTP хранит детали, а хранилище чаще использует частично или полностью обобщённые данные.
4. Агрегация в хранилище позволяет анализировать категории и иерархии, а не только отдельные операции.
5. Данные OLTP динамичны, данные хранилища статичны после ежедневной загрузки.
6. Обработка в OLTP регламентирована и повторяема, в хранилище — нерегламентирована.
7. В OLTP человек сопровождает автоматизацию, в хранилище — ищет новые смыслы через произвольные запросы.
8. Интенсивность транзакций в OLTP высокая, в хранилище средне-низкая.
9. Использование данных в OLTP предсказуемо, в хранилище — нет; часть данных может не пригодиться.
10. OLTP ориентирована на прикладные области, хранилище — на предметную область.
11. OLTP поддерживает повседневные решения, хранилище — стратегические.
12. OLTP может быть много баз по процессам, хранилище — одно единое; оба подхода обычно сосуществуют.

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

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