139 подписчиков

О базах данных просто. Различия OLAP и OLTP

13K прочитали

Небольшой вброс умных слов в канал, которые помогут, если вы начинающий ITшник.

Классифицировать базы данных (БД) можно по многим критериям. В данной статье поговорим о разделении баз на OLAP и OLTP.

OLTP (англ. Online Transaction Processing) или реляционные БД- это базы данных, которые используются везде и повсеместно. Их основная цель - ввод/редактирование/удаление данных в режиме онлайн. Примеры использования: мессенджеры, социальные сети, 1С: Бухгалтерия и т.д.

OLAP (англ. Online Analytical Processing) или многомерные БД - это базы данных, которые служат непосредственно для проведения быстрого анализа больших объемов данных. Обычно такие БД используются на больших предприятиях для построения аналитической отчетности за большой промежуток времени (месяц, квартал, год). Такая информация в основном используется для анализа прошедшего периода и планирования будущего. Основные пользователи аналитических данных - руководители.

Теперь разберемся, в чем принципиальное отличие этих БД.

OLAP выбирает данные быстрее, чем OLTP

Есть такое понятие, как нормализация - оно подразумевает хранение информации максимально просто и не избыточно. Максимально просто: не хранить в одном столбце ФИО, а сделать 3 отдельных. Не избыточно: фамилия клиента должна храниться только в справочнике клиентов, и ее не нужно добавлять в сделанные клиентом заказы.

Денормализация - процесс противоположный нормализации.

OLTP придерживаются принципов нормализации, OLAP - денормализации.

Простой пример этих моделей БД на заказах клиентов в магазине.

Пример OLTP

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

Пример OLAP

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

В базах данных OLAP в центре находится таблица фактов, в которой находятся все показатели (сумма, кол-во) и ссылки на справочники.

А в OLTP одна таблица цепляется за другую без наличия общего связующего звена.

Практический пример, почему для аналитики лучше использовать OLAP.

Допустим, мы хотим найти клиентов, которые совершили больше всего покупок (в денежном эквиваленте), чтобы дать им скидку на будущие покупки.

Если использовать OLTP систему, то нужно использовать справочники:

Клиент - Заказ - Заказанный товар - Товар - Цена на товар

Если воспользоваться OLAP, то понадобится только:

Таблица фактов - Клиент - Цена на товар.

Количество используемых таблиц меньше, производительность лучше, скорость выше.

В OLAP делать insert гораздо сложнее, чем в OLTP

На примере описанном выше попробуем разобраться, как добавить новый заказ в OLAP и OLTP.

В OLTP нужно заполнить 2 таблицы Заказ и Заказанный товар. Для этого необходимо:

1. найти или добавить нового клиента, который сделал заказ, в таблице Клиент

2. найти сотрудника, который составил заказ в таблице Сотрудник

3. добавить запись в таблицу Заказ

4. найти артикул товара в таблице Товаров

5. добавить запись в таблицу Заказанный товар

Итого в запросе базы OLTP будет использоваться 5 таблиц.

В OLAP нужно заполнить только одну таблицу Фактов, но для этого нужно выбрать значения ИД всех справочников:

1. найти или добавить нового клиента в таблице Клиент

2. найти сотрудника в таблице Сотрудник

3. добавить заказ в таблицу Заказ

4. найти товар в таблице Товар

5. найти цену на товар, актуальную на дату составления заказа, в таблице Цена на товар

6. найти склад, на котором хранится товар, в таблице Склад

7. вставить запись в таблицу Фактов.

Итого в запросе базы OLAP будет использоваться 7 таблиц.

Это далеко не самый сложный пример сравнения. Здесь мы рассматривали пример OLAP схемы звезда. Более сложная схема снежинка еще более затрудняет ввод данных и еще больше ускоряет и упрощает выборка данных из таблиц.

Если вам было интересно, читайте о схеме снежинка в следующей статье.