1. Enterprise Vertica-дан неге кетеді: нақты мәселелер
Vertica — Майкл Стоунбрейкер жасаған меншіктік MPP-СУБД. Бүгін OpenText компаниясына тиесілі (Micro Focus/HPE арқылы). Vertica — аналитика үшін күшті қозғалтқыш, бірақ enterprise-пайдаланушылар масштабтау кезінде нақты мәселелерге тап болады.
Нақты мәселелерді қарастырайық — Авито-ның ашық кейсі негізінде (2 ПБ деректер, 50 нод, 50 000 кесте), Habr-да 2025 жылдың желтоқсанында жарияланған.
Масштабтау — апталық тоқтау
Vertica-ға нод қосу деректерді толық ребалансировкалауды талап етеді. Авито кейсінде: 1 ПБ деректер — ребалансировка ~1 апта, тағы бір апта қалу бойынша оқуға. Кластер шамамен екі апта бойы өзекті деректерсіз қалады.
Ресурстар үшін бәсекелестік
Барлық жүктемелер (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+ бағандар) кірістіру кезінде деректерді қайта сұрыптауды талап етеді. Жүздеген бағандары бар үлкен көлемді сұрыптау — қымбат және көп еңбек талап ететін операция.
2. Apache Doris осы мәселелердің әрқайсысын қалай шешеді
Vertica-ның әрбір мәселесінің Apache Doris архитектурасында нақты шешімі бар:
| Vertica мәселесі | Apache Doris шешімі |
|---|---|
| Апталық ребалансировка | Tablet-based sharding, BE-нодтар қосылғанда auto-balance. Жаңа нодтар минуттарда қосылады, деректер фонда блоктаусыз теңестіріледі. |
| Ресурстар үшін бәсекелестік | Cgroups бар Workload Groups: әр пайдаланушы тобы үшін CPU/Memory қатаң лимиттер. ETL ad-hoc-ты өлтірмейді. |
| Сбойда сағат бойы аналитикасыз | BE нодтар — репликалары бар stateless executor. FE — BDBJE арқылы consensus. Қалпына келтіру уақыты: секундтар, сағат емес. |
| Vendor lock-in, лицензия | Apache License 2.0: нөлдік лицензиялық шығындар, нөлдік санкция тәуекелі. VeloDB Enterprise — open-source-пен 100% үйлесімді. |
| Кең кестелер тежейді | Міндетті сұрыптаусыз columnar storage. Batch insert үшін Stream Load. 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) | Delete Bitmap бар Unique Key — нативті UPSERT |
| Full-text іздеу | Нативті жоқ (semi-structured үшін Flex Tables) | Full-text search үшін Inverted Index + BM25 |
| Vector Search | Жоқ | AI/RAG үшін HNSW / IVFPQ |
| Lakehouse Federation | Шектеулі (S3/HDFS үшін External Tables) | 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 дәстүрлі DWH-қозғалтқыштардан 3-5x жылдам. TPC-DS: Doris 99/99 сұранысты орындайды — enterprise-grade SQL толықтығы.
Real-time жаңартулар: ClickHouse-тан 34x дейін жылдам (ол Vertica-дан жазу бойынша жылдамырақ). ClickBench: Doris аналитикалық жүктемелер бойынша топ-3-те.
Негізгі қорытынды: Vertica — күшті қозғалтқыш. Бірақ Doris оған сәйкес келеді немесе асады, сонымен қатар real-time, толық мәтінді іздеу және векторлық мүмкіндіктерді қосады.
Дереккөздер: Авито-ның Habr-дағы жариялы мақалалары, VeloDB бенчмарктары.
5. SQL көшу: не өзгереді
Vertica-дан Apache Doris-ке көшу кезінде SQL-конструкцияларды маппинг:
| 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 негіздегі кеңейтімділік |
| 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 |
| Инфрақұрылым | Арнайы серверлер, coupled | Commodity hardware, опционалды cloud |
| Қызмет көрсету | Projections tuning, statistics, DBA | Auto Materialized Views, CBO, аз DBA жұмысы |
| Масштабтау | Қымбат: ребалансировка = downtime | Арзан: add nodes online, auto-balance |
| Vendor risk | OpenText (сатып алу белгісіздігі) | 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 фазалы көшу стратегиясы:
- Doris-ті Vertica жанына deploy ету
- Деректерді репликациялау (Parquet export немесе JDBC)
- Сұраныстарды параллель іске қосу, нәтижелерді салыстыру
- Read-трафикті біртіндеп ауыстыру
- Vertica-ны пайдаланудан шығару
8. Vertica қашан жақсырақ болуы мүмкін
Әділ бағалау — Vertica-ның күшті жақтары бар:
- Vertica Projections-ке терең инвестиция жасап, олар жүктемеңізге тамаша бапталған болса.
- Vertica-ның озық ML-функцияларын пайдалансаңыз (in-database machine learning).
- Команда Vertica-да терең тәжірибеге ие болса және өзгерістерге мотивация болмаса.
- Vertica Eon Mode пайдаланып, OpenText-пен жұмыс қатынасы болса.
Бірақ real-time жаңартулар, full-text іздеу, vector search, lakehouse federation немесе ашық лицензия қажет болса — Doris осы тапсырмаларды шешеді. Ал vendor risk маңызды болса (санкциялар, OpenText белгісіздігі) — Apache 2.0 бұл тәуекелді толық жояды.