Vertica
Vertica — это колоночная система управления реляционными базами данных (СУБД), разработанная для аналитической обработки больших объёмов данных (OLAP). Относится к классу MPP (massively parallel processing) баз данных, обеспечивающих параллельное выполнение запросов на кластере из нескольких узлов. Система известна высокой скоростью загрузки и выполнения сложных аналитических запросов за счёт колоночного хранения, сжатия данных и ориентированности на запросы с агрегациями и фильтрацией.
История
Vertica была основана в 2005 году в США Майклом Стоунбрейкером — одним из ведущих специалистов в области баз данных, создателем Ingres, Postgres и C-Store. Прототипом Vertica стала исследовательская система C-Store, разработанная в Массачусетском технологическом институте (MIT) совместно с учёными из других университетов. Первая коммерческая версия Vertica вышла в 2007 году. В 2011 году компания Vertica была приобретена корпорацией Hewlett-Packard (HP), а затем вошла в структуру Hewlett Packard Enterprise (HPE) после разделения HP в 2015 году. В 2019 году права на продукт были переданы дочерней компании Micro Focus, которая впоследствии стала частью OpenText в 2023 году. В России Vertica распространяется через дистрибьюторов, а также используются альтернативные решения в рамках импортозамещения.
Архитектура и устройство
Vertica построена на архитектуре общей пустоты (shared-nothing), где каждый узел кластера владеет собственным набором данных и выполняет вычисления независимо. Данные горизонтально разбиваются на сегменты (проекции), которые распределяются по узлам. Запросы обрабатываются с использованием MPP-параллелизма: координатор (cohort node) разбивает запрос на подзапросы, распределяет их по исполнительным узлам, а затем собирает и агрегирует результаты.
Колоночное хранение
Основное отличие Vertica от строковых СУБД — хранение данных по столбцам, а не по строкам. Каждый столбец таблицы физически хранится отдельно. Это даёт преимущества при аналитических запросах, которые обращаются не ко всем столбцам, а лишь к нескольким. Чтение только нужных столбцов снижает объём ввода/вывода. Кроме того, колоночное хранение упрощает сжатие данных: значения одного типа в соседних строках часто повторяются или близки, что позволяет применять эффективные алгоритмы сжатия (например, RLE — run-length encoding, словарное сжатие, разностное кодирование). Степень сжатия в Vertica может достигать 10:1 и выше, сокращая дисковое пространство и ускоряя чтение.
Проекции и упорядочивание
В Vertica вместо классических индексов используются проекции (projections) — физические представления данных, которые могут содержать подмножество столбцов таблицы и быть отсортированы по определённому порядку. Одна таблица может иметь несколько проекций для разных типов запросов. Например, проекция, отсортированная по дате, ускоряет запросы с фильтром по дате, а проекция, содержащая только идентификатор и сумму, — агрегатные запросы. Система автоматически выбирает наиболее оптимальную проекцию для каждого запроса.
Сжатие и кодирование
Vertica поддерживает несколько методов сжатия и кодирования данных на уровне столбцов:
- RLE (Run-Length Encoding) — эффективен для столбцов с повторяющимися значениями.
- Словарное кодирование — замена повторяющихся значений короткими кодами.
- Разностное кодирование (Delta) — хранение разностей между последовательными значениями.
- Interleaved — комбинированный метод.
- Integer encoded — для целочисленных типов.
- Auto — автоматический выбор метода на основе статистики данных.
Ключевые возможности
Vertica оптимизирована для аналитики в реальном времени и работы с большими данными (Big Data). Основные возможности включают:
- Высокая скорость выполнения запросов. Благодаря колоночному хранению, сжатию и параллелизму, Vertica способна выполнять запросы, охватывающие миллиарды строк, за секунды.
- Гибридная загрузка данных (Hybrid Storage). Позволяет загружать данные как массово (bulk load), так и потоково (streaming), с возможностью использования формата Flex (JSON, Avro, Parquet) без предопределённой схемы.
- Розничное, секторальное и проекционное хранение. Данные могут храниться как в оперативной памяти, так и на дисках (ROS — Read-Optimized Store, WOS — Write-Optimized Store), что балансирует скорость записи и чтения.
- Встроенные аналитические функции: оконные функции, статистические функции, работа с временными рядами, геопространственные запросы, интеграция с R и Python для машинного обучения.
- Поддержка SQL с расширениями для аналитики, включая сложные агрегации, подзапросы, объединения (JOIN).
- Механизм прогнозирования и машинного обучения (Vertica Machine Learning) — модели классификации, регрессии, кластеризации, временных рядов могут создаваться и выполняться на языке запросов без выгрузки данных.
- Кластеризация и отказоустойчивость. Кластер может содержать от 1 до сотен узлов. Для отказоустойчивости используется репликация проекций (K-Safe) — данные хранятся на нескольких узлах, при отказе одного узла запросы перенаправляются на реплики.
- Безопасность: шифрование данных (на диске и в каналах связи), управление доступом на основе ролей, аудит.
Применение
Vertica используется в отраслях, где требуется оперативная аналитика больших объёмов данных:
- Телекоммуникации: анализ детализаций звонков (CDR), прогнозирование оттока абонентов, мониторинг сети.
- Финансы: обработка транзакционных данных, обнаружение мошенничества (fraud detection), расчёт рисков, отчётность.
- Розничная торговля: анализ продаж, управление запасами, оптимизация ценообразования.
- Логистика и транспорт: мониторинг перемещений, оптимизация маршрутов.
- Энергетика: обработка данных с умных счётчиков, прогнозирование потребления.
- Интернет-реклама и медиа: обработка событий веб-аналитики, рекламные аукционы, таргетинг.
В России Vertica применялась в крупных компаниях, однако с 2020-х годов в рамках политики импортозамещения активно внедряются отечественные аналоги, такие как Arenadata DB (на базе Greenplum) и ClickHouse.
Сравнение с аналогами
Vertica конкурирует с другими колоночными СУБД:
- ClickHouse — столбцовая СУБД с открытым исходным кодом, разработанная в России (компания «Яндекс»). ClickHouse обеспечивает ещё более высокую скорость вставки и выполнения запросов в простых сценариях, но уступает Vertica в развитости реляционной модели, поддержке сложных JOIN и транзакций.
- Greenplum — MPP-база на основе строкового хранения PostgreSQL, поддерживающая колоночное расширение в новых версиях. Обладает богатой экосистемой, но скорость аналитических запросов обычно ниже, чем у Vertica.
- Amazon Redshift — облачная колоночная СУБД от AWS. Похожа по архитектуре и возможностям, но является проприетарным облачным сервисом, в то время как Vertica предлагает как локальную, так и облачную версию.
- Apache Druid — ориентирована на реальное время и потоковую аналитику, но уступает Vertica в реляционных запросах и поддержке сложных агрегаций.
Ограничения
Vertica имеет ряд ограничений:
- Плохо подходит для OLTP-нагрузок (частых транзакций INSERT, UPDATE, DELETE). Операции модификации отдельных строк требуют перестроения проекций и выполняются медленно.
- Требуется предварительное проектирование проекций для достижения высокой производительности; неправильно подобранные проекции снижают скорость запросов.
- Высокие требования к оперативной памяти для работы в режиме in-memory, особенно при выполнении сложных JOIN.
- Отсутствие поддержки хранимых процедур в полном смысле (используются только внешние скрипты).
- Лицензия является коммерческой и дорогостоящей, что ограничивает распространение в небольших организациях.
Интересные факты
- Основатель Vertica Майкл Стоунбрейкер также создал Ingres, Illustra, Postgres (предшественник PostgreSQL) и C-Store. За вклад в базы данных он получил премию Тьюринга в 2014 году.
- Vertica способна обрабатывать до миллиардов строк в секунду при определённых конфигурациях и оптимизации запросов.
- До приобретения HP Vertica привлекла финансирование от венчурных фондов, включая Bessemer Venture Partners.
Источники
- Vertica Documentation (Micro Focus / OpenText)
- Stonebraker M. et al. "C-Store: A Column-oriented DBMS" (VLDB 2005)
- "Vertica: The Column-Oriented Database" — техническая белая книга Hewlett Packard Enterprise
- Официальный сайт Vertica (OpenText) — документация и описание архитектуры
- Материалы конференций Highload++ и Data Fusion о практике эксплуатации Vertica в российских компаниях
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →