Открыть сервис

VertiPaq

VertiPaq — это технология сжатия и хранения данных в памяти (in-memory), разработанная корпорацией Microsoft и используемая в аналитических сервисах, таких как Microsoft Analysis Services (в режиме Tabular), Power BI и Power Pivot для Excel. VertiPaq лежит в основе так называемого «табулярного движка», который обеспечивает высокую скорость работы с большими объёмами данных за счёт колоночного хранения, эффективного сжатия и специализированных алгоритмов запросов.

История

Технология VertiPaq была анонсирована компанией Microsoft в конце 2000-х годов как часть нового поколения средств бизнес-аналитики. Первоначально она появилась в Microsoft SQL Server 2012 в составе служб Analysis Services в табулярном режиме. Разработка велась с целью преодоления ограничений традиционных многомерных (OLAP) кубов, которые требовали длительного проектирования схем типа «звезда» и сложного администрирования.

VertiPaq стала ответом на рост популярности колоночных баз данных и необходимость работы с моделями данных, которые могут быть как импортированными из различных источников, так и динамически обновляемыми. С выходом Power Pivot для Excel 2010 технология стала доступна для массового пользователя, а в Power BI (с 2015 года) она превратилась в стандартный механизм хранения и обработки данных. С тех пор VertiPaq постоянно совершенствуется: в неё добавляются новые алгоритмы сжатия, улучшается поддержка DirectQuery (гибридный режим работы) и оптимизируется производительность запросов языка DAX (Data Analysis Expressions).

Устройство и принципы работы

VertiPaq хранит данные в оперативной памяти в колоночном формате. В отличие от строковых баз данных, где все значения одной строки хранятся вместе, колоночный формат хранит все значения одного столбца (колонки) последовательно. Это даёт два главных преимущества:

  1. Высокая степень сжатия. Значения одного столбца часто повторяются или изменяются в узком диапазоне, что позволяет применять эффективные алгоритмы сжатия (кодирование, дельта-сжатие, словарное сжатие). В результате объём данных в памяти может уменьшиться в 5–10 раз по сравнению с исходным размером.
  2. Скорость работы запросов. Для агрегаций (сумма, среднее, количество) движку не нужно считывать целые строки — достаточно прочитать только нужные колонки. Это радикально ускоряет выполнение аналитических запросов.

Колоночное сжатие

VertiPaq использует несколько методов сжатия в зависимости от типа данных столбца:

Кроме того, VertiPaq применяет алгоритмы Run-Length Encoding (RLE) и дельта-сжатие для последовательностей повторяющихся значений. Все эти механизмы работают прозрачно для пользователя и не требуют настройки.

Табулярная модель

VertiPaq оперирует понятием «табулярной модели» — набора таблиц (связанных или не связанных друг с другом), которые загружены в память. Каждая таблица может быть как целиком импортирована из источника (например, из SQL Server, Oracle, CSV-файла), так и быть результатом вычислений (вычисляемые таблицы, созданные на языке DAX). Модель данных может включать миллиарды строк и тысячи столбцов, ограничиваясь только доступной оперативной памятью сервера или клиентского компьютера.

Запросы на языке DAX

Основным языком для обращения к данным, хранящимся в VertiPaq, является DAX (Data Analysis Expressions)язык формул, напоминающий синтаксис Excel. DAX позволяет выполнять сложные вычисления, фильтрацию, создание мер и колонок. VertiPaq интерпретирует DAX-выражения, генерируя внутренние запросы к колоночным хранилищам. Благодаря колоночной архитектуре, типичные операции типа SUM, COUNT, AVERAGE выполняются за доли секунды даже на многомиллионных наборах данных.

Классификация режимов работы

VertiPaq может работать в двух основных режимах, определяющих способ загрузки данных:

Также существует гибридный режим — Composite Models, где часть таблиц загружается в память, а часть остаётся в режиме DirectQuery.

Применение

VertiPaq широко применяется в корпоративной аналитике и самообслуживаемой бизнес-аналитике. Основные сценарии:

Преимущества и ограничения

Преимущества

Ограничения

Сравнение с другими технологиями

VertiPaq часто сравнивают с другими колоночными движками, такими как Oracle In-Memory Database, SAP HANA, Apache Parquet (формат хранения) и ClickHouse. Ключевое отличие VertiPaq — тесная интеграция с DAX и экосистемой Microsoft BI. В отличие от ClickHouse, который оптимизирован для real-time агрегаций больших объёмов логов, VertiPaq лучше подходит для аналитики с реляционными, но большими наборами данных, где важна поддержка сложных вычислений на лету.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →