1. Зачем уходить с Vertica
Vertica — коммерческий колоночный MPP от Micro Focus / OpenText. Десятилетиями она была выбором enterprise-аналитики, но сегодня её позиции слабеют.
Типичные причины миграции:
- Высокая стоимость: per-node или per-TB лицензирование, ежегодные платежи, дорогостоящая поддержка. Стоимость владения растёт каждый год.
- Vendor lock-in: проприетарные SQL-расширения, проприетарный формат хранения. Переход на другую систему — сложный и дорогой.
- Лицензионные аудиты: риски штрафов за несоответствие, необходимость постоянного контроля compliance.
- Ограниченный real-time: Vertica спроектирована для batch-нагрузок. Нет нативного CDC и streaming ingest.
- Поглощение OpenText (2023): неопределённость продуктовой roadmap, повышение цен, смена приоритетов вендора.
- Импортозамещение: в контексте КЗ/РФ — тренд на уход от западных коммерческих СУБД.
- Нет lakehouse-федерации: отсутствует нативная поддержка Iceberg, Hudi, Delta Lake.
2. Архитектура: Vertica vs Apache Doris
Обе системы — колоночные MPP, но с принципиально разными подходами к лицензированию, real-time и экосистеме:
| Vertica | Apache Doris |
|---|---|
| Commercial columnar MPP | Open-source columnar MPP |
| Coordinator + worker nodes | FE + BE nodes, auto-balance |
| PostgreSQL-compatible SQL | MySQL-compatible SQL |
| Proprietary storage (ROS/WOS) | Open columnar + inverted index |
| Projections (materialized sort orders) | Materialized Views with auto-rewrite |
| Limited real-time (trickle load) | Real-time: Kafka, Flink CDC, Stream Load |
| External tables (limited) | Multi-Catalog: Iceberg, Hudi, Delta, Hive |
| Per-node licensing ($$$) | Apache License 2.0 (free) |
3. SQL-совместимость и адаптация
Ключевое преимущество миграции с Vertica — обе системы полноценно поддерживают SQL. Адаптация значительно проще, чем при миграции с ClickHouse.
| Vertica | Apache Doris |
|---|---|
| VARCHAR | VARCHAR |
| INTEGER | INT |
| TIMESTAMPTZ | DATETIME |
| VARBINARY | STRING |
| COPY (bulk load) | Stream Load |
| MERGE | INSERT ... ON DUPLICATE KEY UPDATE |
| HASH() | CRC32 / MURMUR_HASH3 |
| Projections | Materialized Views / Rollup |
Аналитические функции: большинство оконных функций (RANK, ROW_NUMBER, LAG, LEAD) работают в обеих системах без изменений.
Vertica Projections → Doris Materialized Views с automatic query rewrite и Rollup-индексы. Flex Tables (schema-on-read) → VARIANT тип в Doris 2.1+.
// МИГРАЦИЯ SQL: VERTICA → DORIS -- Vertica (before) SELECT department,
TIMESTAMPDIFF('month', hire_date, CURRENT_TIMESTAMP) AS tenure_months,
SUM(revenue) OVER (PARTITION BY department ORDER BY hire_date) AS running_total
FROM employees e
JOIN sales s ON e.emp_id = s.emp_id
WHERE sale_date >= CURRENT_DATE - INTERVAL '90 days';
-- Apache Doris (after) SELECT department,
TIMESTAMPDIFF(MONTH, hire_date, CURRENT_TIMESTAMP()) AS tenure_months,
SUM(revenue) OVER (PARTITION BY department ORDER BY hire_date) AS running_total
FROM employees e
JOIN sales s ON e.emp_id = s.emp_id
WHERE sale_date >= CURRENT_DATE - INTERVAL 90 DAY; 4. Перенос данных: инструменты и подходы
Основные инструменты для миграции данных из Vertica:
- X2Doris: Официальный инструмент миграции Doris: автоматический перенос схемы и данных.
- Parquet Export → Broker Load: Vertica EXPORT TO PARQUET → S3/HDFS → Doris Broker Load. Рекомендуемый подход для больших объёмов.
- Spark Bridge: Spark читает Vertica через JDBC → пишет в Doris. Подходит для трансформации данных при переносе.
- Flink CDC: Для промежуточной синхронизации. Vertica не имеет нативного CDC — извлечение через timestamp-колонки.
- JDBC Catalog: Doris может читать таблицы Vertica через JDBC Catalog для валидации без копирования данных.
Валидация: сравнение row count, контрольных сумм и результатов sample-запросов между Vertica и Doris.
5. Стратегия миграции: 5 фаз
Рекомендуемая стратегия миграции с Vertica:
- Фаза 1 — Schema mapping: маппинг Vertica projections → Doris table models + Materialized Views.
- Фаза 2 — Перенос исторических данных: Parquet export → Broker Load в Doris.
- Фаза 3 — Dual-write: новые данные пишутся в обе системы через ETL.
- Фаза 4 — Сравнение запросов: одинаковые отчёты на обеих системах, сравнение результатов и производительности.
- Фаза 5 — Cutover: переключение на Doris и вывод Vertica из эксплуатации.
Типичные сроки: 4–12 недель (дольше, чем миграция с ClickHouse из-за более широкой SQL-поверхности). Ключевой риск: Vertica-специфичные UDF и stored procedures требуют переписывания.
6. Кейсы миграции
Финансовый сектор: Oracle + Vertica → VeloDB Cloud
Enterprise-клиент VeloDB из финансового сектора заменил Oracle и Vertica на VeloDB Cloud. Снижение TCO на 60%, ускорение запросов в 8 раз.
Тренд в СНГ: уход с Vertica
Банки и телеком-операторы в СНГ покидают Vertica из-за стоимости лицензий и тренда на импортозамещение. datalakehouse.kz позиционируется как «Замена Oracle и Vertica».
Apache Doris Community
Множество историй миграции с Vertica на Doris в сообществе doris.apache.org. Типичный результат — 40–70% снижение TCO при сопоставимой или лучшей производительности.
7. TCO: сколько стоит уйти с Vertica
Сравнение совокупной стоимости владения:
- Лицензирование: Vertica ~$10K–50K per TB/year vs Apache Doris = $0 (Apache License 2.0).
- Enterprise-поддержка: VeloDB Enterprise — доля стоимости Vertica лицензии.
- Железо: сопоставимый footprint для колоночных MPP, но авто-компакция Doris снижает объём хранения.
- Инженеры: навыки PostgreSQL (Vertica) vs MySQL (Doris) — обе skill-базы широко доступны на рынке.
- Обучение: минимальное для SQL-аналитиков (SQL похож), больше для DBA (другая модель администрирования).
- Окупаемость: типично 6–12 месяцев включая стоимость миграции.
- Долгосрочно: 40–70% снижение TCO по данным кейсов VeloDB.