xVelocity
xVelocity — это технология хранения данных в оперативной памяти (in-memory columnstore), разработанная корпорацией Microsoft и впервые представленная в 2010 году как компонент Microsoft SQL Server 2012 (под названием VertiPaq). Технология предназначена для ускорения аналитических запросов и обработки больших объёмов данных за счёт сжатия, колоночного хранения и параллельной обработки.
История
Разработка xVelocity началась в середине 2000-х годов в рамках проекта Microsoft SQL Server под кодовым названием «Madison». Основной целью было создание механизма, способного выполнять аналитические запросы на порядки быстрее традиционных реляционных баз данных, использующих строковое хранение. Первая публичная демонстрация технологии состоялась на конференции TechEd 2010. В 2012 году xVelocity была включена в состав Microsoft SQL Server 2012 как часть служб Analysis Services (SSAS) в режиме табличного хранения (Tabular mode). В последующих версиях SQL Server (2014, 2016, 2017, 2019, 2022) технология получила улучшения в области сжатия, параллельной обработки и интеграции с Power BI.
Архитектура и принципы работы
Колоночное хранение
В отличие от традиционных строковых баз данных, где данные каждой записи хранятся последовательно, xVelocity хранит данные по столбцам. Это позволяет:
- Сжимать данные с высоким коэффициентом (за счёт однотипности значений в столбце).
- Выполнять агрегатные функции (SUM, COUNT, AVG) без чтения всех столбцов таблицы, что сокращает объём ввода-вывода.
- Эффективно обрабатывать запросы, затрагивающие только несколько столбцов из сотен.
Хранение в оперативной памяти
Все данные, обрабатываемые xVelocity, загружаются в оперативную память (RAM). Это устраняет задержки, связанные с чтением с диска, и обеспечивает скорость доступа на уровне наносекунд. Для обеспечения отказоустойчивости данные могут дублироваться на диск (snapshot или журнал транзакций).
Сжатие данных
xVelocity использует несколько методов сжатия:
- Словарное сжатие: для столбцов с повторяющимися значениями (например, пол, страна) создаётся словарь, и вместо самих значений хранятся их индексы.
- Кодирование длин серий (RLE): для последовательностей одинаковых значений (например, даты) хранится только значение и количество повторений.
- Битовое сжатие: для числовых столбцов с малым диапазоном значений.
Коэффициент сжатия может достигать 10–20 раз по сравнению с несжатым строковым хранением.
Параллельная обработка
xVelocity поддерживает многопоточную обработку запросов. Каждый запрос разбивается на подзадачи, которые выполняются параллельно на нескольких ядрах процессора. Это позволяет обрабатывать миллиарды строк за секунды.
Применение
Microsoft SQL Server Analysis Services (SSAS)
В режиме Tabular xVelocity используется для создания аналитических моделей данных, которые могут быть запрошены через MDX, DAX или SQL. Такие модели применяются в корпоративной отчётности, бизнес-аналитике и построении дашбордов.
Power BI
В Power BI xVelocity является основой для движка VertiPaq, который обрабатывает данные в памяти при загрузке отчётов. Технология позволяет Power BI работать с таблицами объёмом до 10 ГБ (в зависимости от версии) и выполнять сложные вычисления на стороне клиента.
Azure Analysis Services
В облачной платформе Microsoft Azure технология xVelocity используется в службе Azure Analysis Services, предоставляя масштабируемые аналитические решения для корпоративных клиентов.
Экспорт и интеграция
xVelocity поддерживает импорт данных из различных источников: реляционных баз данных (SQL Server, Oracle, PostgreSQL), плоских файлов (CSV, Excel), облачных сервисов (Azure Blob Storage, Dynamics 365) и других.
Преимущества и недостатки
Преимущества
- Высокая скорость выполнения аналитических запросов (до 100 раз быстрее традиционных баз данных).
- Эффективное сжатие, снижающее затраты на хранение.
- Поддержка сложных вычислений на языке DAX.
- Интеграция с продуктами Microsoft (Excel, Power BI, SharePoint).
Недостатки
- Зависимость от объёма оперативной памяти: при превышении лимита данные могут выгружаться на диск, что снижает производительность.
- Ограниченная поддержка транзакционных операций (OLTP) — технология ориентирована на аналитику, а не на запись данных.
- Высокие требования к аппаратному обеспечению (RAM, CPU) для больших моделей.
Версии и развитие
| Версия SQL Server | Год выпуска | Основные улучшения xVelocity |
|---|---|---|
| 2012 | 2012 | Первая реализация VertiPaq в SSAS Tabular |
| 2014 | 2014 | Поддержка сжатия для колоночных индексов |
| 2016 | 2016 | Улучшение параллельной обработки, поддержка R-скриптов |
| 2017 | 2017 | Интеграция с Power BI, поддержка Python |
| 2019 | 2019 | Ускорение запросов за счёт batch mode, поддержка Big Data Clusters |
| 2022 | 2022 | Оптимизация для Azure, улучшение сжатия |
Критика
Основные замечания к xVelocity связаны с её ограничениями:
- Высокая стоимость лицензирования Microsoft SQL Server Enterprise, необходимого для полноценного использования технологии.
- Отсутствие нативной поддержки для нереляционных данных (JSON, XML) в ранних версиях.
- Зависимость от экосистемы Microsoft, что затрудняет миграцию на другие платформы.
Сравнение с аналогами
| Технология | Разработчик | Тип хранения | Основное применение |
|---|---|---|---|
| xVelocity (VertiPaq) | Microsoft | In-memory columnstore | Аналитика, BI |
| SAP HANA | SAP | In-memory row/column | OLAP, OLTP |
| Oracle TimesTen | Oracle | In-memory row | OLTP, кэширование |
| Apache Spark | Apache | In-memory distributed | Big Data, ML |
Интересные факты
- Название «VertiPaq» происходит от сочетания слов «vertical» (вертикальный) и «pack» (упаковка), что отражает колоночный принцип хранения.
- В Power BI технология xVelocity позволяет обрабатывать запросы к таблицам с миллиардами строк за время менее секунды.
- В 2015 году Microsoft открыла спецификации DAX как открытый стандарт, что позволило сторонним разработчикам создавать инструменты, совместимые с xVelocity.
Источники
- Microsoft Docs: SQL Server Analysis Services Tabular (VertiPaq)
- Microsoft Docs: Power BI VertiPaq Engine
- SQL Server 2012 Books Online: Columnstore Indexes
- Microsoft Research: VertiPaq: A Column-Oriented In-Memory Database Engine
- TechNet: xVelocity In-Memory Analytics in SQL Server 2012
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →