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

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 поддерживает несколько методов сжатия и кодирования данных на уровне столбцов:

Ключевые возможности

Vertica оптимизирована для аналитики в реальном времени и работы с большими данными (Big Data). Основные возможности включают:

Применение

Vertica используется в отраслях, где требуется оперативная аналитика больших объёмов данных:

В России Vertica применялась в крупных компаниях, однако с 2020-х годов в рамках политики импортозамещения активно внедряются отечественные аналоги, такие как Arenadata DB (на базе Greenplum) и ClickHouse.

Сравнение с аналогами

Vertica конкурирует с другими колоночными СУБД:

Ограничения

Vertica имеет ряд ограничений:

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

Источники

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

На главную BFOmetr →