1. Почему enterprise уходит с Vertica: реальные боли
Vertica — проприетарная MPP-СУБД, созданная Майклом Стоунбрейкером. Сегодня принадлежит OpenText (через Micro Focus/HPE). Vertica — мощный движок для аналитики, но enterprise-пользователи сталкиваются с реальными проблемами при масштабировании.
Разберём конкретные боли — на основе публичного кейса Авито (2 ПБ данных, 50 нод, 50 000 таблиц), опубликованного на Habr в декабре 2025.
Масштабирование — недели простоя
Добавление нод в Vertica требует полной ребалансировки данных. В кейсе Авито: 1 ПБ данных — ребалансировка занимает ~1 неделю плюс ещё неделя на вычитку отставания. Практически две недели кластер остаётся без актуальных данных. Enterprise не может расти динамически.
Конкуренция за ресурсы
Все нагрузки (ETL, ad-hoc, BI, anti-fraud) конкурируют за одни ресурсы в одном адресном пространстве. В пиковые часы (03:00-15:00) ресурсов не хватает для всех запросов. Resource Pools дают только soft limits — реальной изоляции нет.
Восстановление после сбоев — час без аналитики
Vertica очень долго поднимается при падении. Отказ одной ноды переживается. Но полный сбой кластера — это ~1 час без аналитики. Для банков и телекома с SLA-требованиями это неприемлемо.
Vendor lock-in и лицензия
Проприетарная лицензия OpenText (ранее Micro Focus/HPE). В кейсе Авито: рассматривали Vertica Eon Mode, но контакты с вендором прервались из-за геополитической ситуации. Лицензия per-TB: растёт пропорционально данным. В Центральной Азии OpenText не имеет локального присутствия и SLA-гарантий.
Вставка в широкие таблицы
Vertica требует пересортировки данных при вставке в широкие таблицы (100+ колонок). Сортировка большого объёма с сотнями колонок — дорогая и трудоёмкая операция. Feature Store и ML-пайплайны страдают.
2. Как Apache Doris решает каждую из этих проблем
Каждая боль Vertica имеет конкретное решение в архитектуре Apache Doris:
| Боль Vertica | Решение в Apache Doris |
|---|---|
| Ребалансировка неделями | Tablet-based sharding, auto-balance при добавлении BE-нод. Новые ноды подключаются за минуты, данные балансируются в фоне без блокировки. |
| Конкуренция за ресурсы | Workload Groups с cgroups: жёсткие лимиты CPU/Memory для каждой группы пользователей. ETL не убивает ad-hoc. |
| Час без аналитики при сбое | BE ноды — stateless executor с репликами. FE — consensus через BDBJE. Время восстановления: секунды, не час. |
| Vendor lock-in, лицензия | Apache License 2.0: нулевые лицензионные расходы, нулевой риск санкций. VeloDB Enterprise — 100% совместим с open-source. |
| Широкие таблицы тормозят | Columnar storage без обязательной сортировки. Stream Load для batch insert. Aggregate/Duplicate/Unique Key модели. |
| Нет compute/storage разделения | Compute-storage decoupled mode: масштабируйте вычисления отдельно от хранения. |
3. Архитектурное сравнение
Детальное сравнение архитектур Vertica и Apache Doris:
| Vertica (Enterprise Mode) | Apache Doris | |
|---|---|---|
| Архитектура | Shared-nothing MPP, coupled compute+storage | MPP, coupled или decoupled (опционально) |
| Масштабирование | Добавление нод + ребалансировка (дни-недели) | Добавление BE-нод + auto-balance (минуты) |
| Модели хранения | Projections (материализованные отсортированные копии) | 3 модели: Duplicate Key, Unique Key, Aggregate Key + Materialized Views |
| Real-time UPSERT | Ограниченный (DELETE + INSERT) | Unique Key с Delete Bitmap — нативный UPSERT |
| Full-text поиск | Нет нативного (Flex Tables для semi-structured) | Inverted Index + BM25 для full-text search |
| Vector Search | Нет | HNSW / IVFPQ для AI/RAG |
| Lakehouse Federation | Ограниченный (External Tables для S3/HDFS) | Multi-Catalog: Iceberg, Hudi, Delta, Hive, JDBC |
| SQL протокол | Собственный протокол + JDBC/ODBC | MySQL protocol — любой BI инструмент из коробки |
| Workload Isolation | Resource Pools (soft limits) | Workload Groups + cgroups (hard limits) |
| Лицензия | Proprietary (OpenText), per-TB | Apache 2.0 (бесплатно), VeloDB Enterprise — per-core |
4. Производительность: бенчмарки
Авито провели собственное тестирование в 2022 году: Trino показал паритет с Vertica на сложных аналитических запросах. Для контекста: Apache Doris стабильно быстрее Trino на тех же нагрузках.
TPC-H SF100: Doris в 3-5x быстрее традиционных DWH-движков. TPC-DS: Doris выполняет 99/99 запросов — enterprise-grade SQL completeness.
Real-time обновления: до 34x быстрее ClickHouse (который уже быстрее Vertica для записей). ClickBench: Doris в топ-3 для аналитических нагрузок.
Ключевой вывод: Vertica — сильный движок. Но Doris соответствует или превосходит его, при этом добавляя real-time, полнотекстовый поиск и векторные возможности.
Источники: публичные статьи Авито на Habr, бенчмарки VeloDB.
5. SQL миграция: что меняется
Маппинг SQL-конструкций при миграции с Vertica на Apache Doris:
| Vertica SQL | Apache Doris SQL | Комментарий |
|---|---|---|
| COPY FROM | Stream Load / Broker Load | HTTP API или S3/HDFS load |
| Projections | Materialized Views + auto rewrite | MV автоматически подставляется CBO |
| MERGE INTO | INSERT INTO ... ON DUPLICATE KEY UPDATE | Unique Key таблицы |
| Flex Tables | VARIANT тип данных | Semi-structured данные |
| UDx (C++) | UDF (Java) | Java-based extensibility |
| Resource Pools | Workload Groups | Более жёсткая изоляция |
| Partitioning by expression | RANGE/LIST Partition | Аналогичные возможности |
| ANALYZE_STATISTICS | ANALYZE TABLE | Automatic statistics collection |
// ПРИМЕР МИГРАЦИИ SQL -- Vertica: SELECT customer_id, SUM(amount)
FROM transactions
WHERE tx_date >= CURRENT_DATE - INTERVAL '30 days' GROUP BY customer_id
HAVING SUM(amount) > 10000;
-- Apache Doris: SELECT customer_id, SUM(amount)
FROM transactions
WHERE tx_date >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY customer_id
HAVING SUM(amount) > 10000; Минимальные различия: синтаксис INTERVAL, некоторые приведения типов. 90%+ запросов работают без изменений.
6. Стоимость владения (TCO)
| Фактор | Vertica | Apache Doris / VeloDB |
|---|---|---|
| Лицензия | Per-TB (рост пропорционален данным) | Apache 2.0 бесплатно / VeloDB per-core |
| Инфраструктура | Dedicated серверы, coupled | Commodity hardware, опционально cloud |
| Обслуживание | Projections tuning, statistics, DBA | Auto Materialized Views, CBO, меньше DBA работы |
| Масштабирование | Дорого: ребалансировка = downtime | Дёшево: add nodes online, auto-balance |
| Vendor risk | OpenText (acquisition uncertainty) | Apache Foundation (community-governed) |
Кейс: VeloDB Enterprise Client (финансовый сектор) — замена Oracle + Teradata, снижение TCO на 60%, ускорение запросов в 8x. Типичная экономия при миграции с проприетарного DWH: 40-70%.
7. Инструменты миграции
Экосистема инструментов для миграции с Vertica на Apache Doris:
X2Doris
Автоматическая миграция: конвертация схем, перенос данных.
Parquet/ORC export → Broker Load
Vertica EXPORT → S3 → Doris Broker Load.
JDBC Catalog
Doris читает из Vertica напрямую через JDBC для параллельной валидации.
Flink CDC
Для инкрементальной синхронизации в период dual-run.
SQL Converter
Автоматический перевод Vertica SQL → Doris SQL.
Стратегия миграции в 5 фаз:
- Deploy Doris рядом с Vertica
- Репликация данных (Parquet export или JDBC)
- Параллельный запуск запросов, сравнение результатов
- Постепенный перевод read-трафика
- Вывод Vertica из эксплуатации
8. Когда Vertica может быть лучше
Честная оценка — Vertica имеет сильные стороны:
- Если вы глубоко инвестировали в Vertica Projections и они идеально настроены под вашу нагрузку.
- Если используете продвинутые ML-функции Vertica (in-database machine learning).
- Если команда имеет глубокую экспертизу Vertica и нет мотивации к изменениям.
- Если используете Vertica Eon Mode и имеете рабочие отношения с OpenText.
Но если нужны real-time обновления, full-text поиск, vector search, lakehouse federation или открытая лицензия — Doris решает эти задачи. А если vendor risk важен (санкции, неопределённость OpenText) — Apache 2.0 устраняет этот риск полностью.