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

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 →