OLTP и OLAP
Базы данных можно разделить на две категории:
➖ OLTP — оптимизированные для обработки транзакций
➖ OLAP — оптимизированные для аналитических запросов
OLTP-системы обычно нацелены на работу с пользователями. По запросу пользователя приложение ищет небольшое количество записей (обычно с помощью индекса). На основе вводимых пользователем данных вставляются или обновляются записи.
Например, заказы в интернет-магазине хранятся в OLTP базе. Типичные запросы при работе с заказами:
🔵создание заказа
🔵обновление статуса заказа
🔵просмотр списка заказов
OLAP системы предназначены для работы аналитиков.
Например, аналитические запросы в интернет-магазине:
❓сколько телефонов этой модели продавалось каждый месяц?
❓на сколько больше их было продано во время рекламной акции?
❓какие аксессуары чаще всего покупают с этими телефонами?
От OLTP систем ожидается высокая доступность и обработка транзакций с низкой задержкой, поскольку они критичны для работы бизнеса.
Обычно аналитический запрос должен просмотреть огромное количество записей, прочитать в каждой записи только несколько столбцов, возможно отфильтровать записи и вычислить сводные статистические показатели. Такие запросы часто являются ресурсоемкими. Они могут ухудшать производительность базы в части выполняемых в этот момент запросов пользователей (транзакций). Поэтому данные из OLTP баз выгружают в отдельные OLAP хранилища, с которыми уже работают аналитики. OLAP базы оптимизированы в расчете на аналитические паттерны доступа.
Процесс выгрузки известен под названием ETL (extract — transform — load).
Часто в качестве OLAP систем используются колоночные базы данных (ClickHouse, Vertica). В большинстве OLTP баз данные хранятся построчно: все значения из одной строки таблицы хранятся рядом друг с другом. В колоночных базах рядом хранятся значения не из одной строки, а из одного столбца. Это позволяет загружать с диска только те столбцы, которые нужны для запроса. Плюс данные можно сжать.
Данные можно хранить отсортировано. Сортировка должна быть для всех строк одинаковая, поскольку файлы всех столбцов содержат строки в одинаковом порядке. При необходимости собрать воедино целую строку можно взять из всех файлов отдельных столбцов 57-й элемент и собрать их вместе для формирования 57-й строки таблицы.
OLAP система не значит обязательно колоночная БД. Это может быть и обычная построчная БД. Однако колоночные базы работают намного быстрее при произвольных аналитических запросах, поэтому их часто используют в качестве OLAP систем.
На этом завершаем обсуждение 3-й главы.
Для удобства поиска добавила теги.
#кабанчик #сисдиз
Post #41
2.05K
- 👍 12
- ❤ 6