Что такое OLAP?
OLAP расшифровывается как Online Analytical Processing. Это широкий термин, на который можно смотреть с двух точек зрения: технической и бизнес-ориентированной. Но на самом верхнем уровне можно просто прочитать эти слова в обратном порядке:
Processing (обработка) : Некоторый исходный набор данных обрабатывается...
Analytical (аналитическая) : ...чтобы получить аналитические отчёты и аналитические выводы...
Online (онлайн) : ...в режиме реального времени.
OLAP с точки зрения бизнеса
В последние годы бизнес всё больше осознаёт ценность данных. Компании, которые принимают решения вслепую, чаще всего не успевают за конкурентами. Подход успешных компаний, основанный на данных, вынуждает их собирать все данные, которые хотя бы отдалённо могут быть полезны для принятия бизнес-решений, поэтому им требуются механизмы для их своевременного анализа. Именно здесь на помощь приходят системы управления базами данных (DBMS) класса OLAP.
С точки зрения бизнеса OLAP позволяет компаниям непрерывно планировать, анализировать и формировать отчётность по операционной деятельности, тем самым максимизируя эффективность, снижая расходы и в конечном счёте завоёвывая долю рынка. Это может быть реализовано как во внутренней системе, так и с привлечением SaaS-провайдеров, таких как веб-/мобильные сервисы аналитики, CRM-сервисы и т.д. OLAP — это технология, лежащая в основе многих приложений класса BI (Business Intelligence).
ClickHouse — это система управления базами данных класса OLAP, которая довольно часто используется как бэкенд для таких SaaS-решений для анализа данных в конкретной предметной области. Однако некоторые компании до сих пор не готовы делиться своими данными с внешними провайдерами, и сценарий с внутренним хранилищем данных также остаётся вполне жизнеспособным вариантом.
OLAP с технической точки зрения
Все системы управления базами данных можно разделить на две группы: OLAP (Online Analytical Processing — онлайн-аналитическая обработка) и OLTP (Online Transactional Processing — онлайн-транзакционная обработка). Первые ориентированы на построение отчетов, каждый из которых основан на больших объемах исторических данных, но выполняются они не очень часто. Вторые, напротив, обычно обрабатывают непрерывный поток транзакций, постоянно изменяющих текущее состояние данных.
На практике OLAP и OLTP — это не жесткие категории, а скорее спектр. Большинство реальных систем обычно фокусируются на одном из вариантов, но при этом предоставляют некоторые решения или обходные пути, если требуется и другой тип нагрузки. Такая ситуация часто вынуждает бизнес использовать несколько интегрированных систем хранения, что само по себе может быть не очень большой проблемой, но увеличение числа систем повышает стоимость сопровождения. Поэтому в последние годы появился тренд HTAP (Hybrid Transactional/Analytical Processing — гибридная транзакционная/аналитическая обработка), когда оба типа нагрузки одинаково хорошо обслуживаются одной системой управления базами данных.
Даже если СУБД изначально создавалась как чистая OLAP или чистая OLTP, ее вынуждают двигаться в сторону HTAP, чтобы не отставать от конкурентов. ClickHouse не является исключением: изначально он был спроектирован как максимально быстрая OLAP-система и до сих пор не имеет полноценной поддержки транзакций, но в нем появились некоторые возможности, такие как согласованное чтение/запись и мутации для обновления/удаления данных.
Фундаментальный компромисс между системами OLAP и OLTP сохраняется:
- Для эффективного построения аналитических отчетов принципиально важно уметь читать столбцы по отдельности, поэтому большинство OLAP-баз данных являются колоночными,
- В то время как раздельное хранение столбцов увеличивает стоимость операций над строками, таких как добавление или модификация «на месте», пропорционально количеству столбцов (которое может быть огромным, если система пытается собирать все детали события «на всякий случай»). Поэтому большинство OLTP-систем хранят данные, организованные по строкам.