1. ClickHouse қашан жеткіліксіз болады
ClickHouse — single-table scan және агрегациялар үшін керемет қозғалтқыш: колоночтық сақтау, векторландырылған орындау, қарапайым сұраныстарда әсерлі жылдамдық. Яндексте жасалған ол лог-аналитика мен метрикалар стандартына айналды.
Бірақ тапсырмалар күрделенгенде — баламалар іздеуге мәжбүр ететін мәселелер пайда болады:
- JOIN-өнімділігі: ClickHouse multi-table JOIN-да тарихи түрде әлсіз. Жақында ғана толық CBO пайда болды.
- Real-time updates: ReplacingMergeTree фондық merge арқылы eventual дедупликация қамтамасыз етеді. Нағыз UPSERT жоқ, partial update жоқ.
- Дедупликация: FINAL кілт сөзі ReplacingMergeTree-де оқу өнімділігін құртады — on-the-fly merge іске қосады.
- SQL-толықтығы: TPC-DS сұраныстарының ~50% орындалмайды — correlated subqueries, күрделі CTE қолдау көрсетілмейді.
- Операциялық күрделілік: ClickHouse Keeper/ZooKeeper арқылы қолмен шардтау, деректерді автоматты ребалансинг жоқ.
2. Архитектура: append-only қозғалтқыш vs unified lakehouse
Негізгі айырмашылық — жаңартуларды өңдеу және кластерді басқару моделінде.
| ClickHouse | Apache Doris |
|---|---|
| MergeTree family — фондық merge-мен append-only | Columnar MPP, FE+BE архитектурасы автобалансирлеумен |
| ClickHouse Keeper / ZooKeeper арқылы қолмен шардтау | MySQL-протоколы — адаптерсіз JDBC/ODBC қосылу |
| Өз SQL-диалектісі (MySQL/PostgreSQL-мен үйлесімсіз) | Unique Key (real-time UPSERT) + Aggregate Key + Duplicate Key |
| Нативтік UPSERT жоқ — тек ReplacingMergeTree + FINAL | Vectorized engine + CBO + Runtime Filter JOIN үшін |
| Distributed кестелер қолмен баптауды қажет етеді | Шардтар мен репликаларды автоматты басқару |
Apache Doris бастапқыда деректер real-time жаңартылатын сценарийлер үшін жобаланған. Үш кілт моделі (Unique, Aggregate, Duplicate) әр кесте үшін оңтайлы стратегияны таңдауға мүмкіндік береді.
3. Өнімділік: бенчмарктар
VeloDB Engineering және Apache Doris жариялаған бенчмарктардан деректер:
| Бенчмарк | ClickHouse | Apache Doris | Дереккөз |
|---|---|---|---|
| TPC-H SF100 | Бастапқы деңгей | 3x жылдам | VeloDB Engineering |
| TPC-DS (99 сұраныс) | ~50% сұраныс fail | 99/99 сұраныс | VeloDB Engineering |
| SSB + 25% updates | Бастапқы деңгей | 5–34x жылдам | VeloDB Engineering |
| ClickBench (single-table) | Сәйкес келеді | Сәйкес келеді | ClickBench.com |
| CoffeeBench (real-world) | Бастапқы деңгей | 8x жылдам, 8x арзан | VeloDB Engineering |
| Write throughput (updates) | ReplacingMergeTree + FINAL | Delete Bitmap — тұрақты жылдам | VeloDB Engineering |
4. SQL: стандарт vs диалект
ClickHouse MySQL және PostgreSQL-мен үйлесімсіз өз SQL-диалектісін қолданады. BI-құралдарды қосу арнайы адаптерлерді қажет етеді. Correlated subqueries, кейбір window functions, күрделі CTE қолдау көрсетілмейді.
Apache Doris MySQL-протоколы бойынша жұмыс істейді. Кез келген BI-құрал (Grafana, Superset, Tableau, Power BI) стандартты JDBC/ODBC арқылы адаптерсіз қосылады. Толық TPC-DS SQL қолдау.
// МЫСАЛ: MULTI-TABLE JOIN + WINDOW FUNCTION SELECT department, employee,
SUM(revenue) AS total,
RANK() OVER (PARTITION BY department ORDER BY SUM(revenue) DESC) AS rnk
FROM sales s
JOIN employees e ON s.emp_id = e.id
WHERE sale_date >= '2026-01-01' GROUP BY department, employee; Бұл JOIN және RANK() OVER бар сұраныс Doris-те дайын жұмыс істейді. ClickHouse-та correlated subqueries мен кейбір window functions қайта жазуды қажет етуі мүмкін.
5. Real-time updates: Delete Bitmap vs ReplacingMergeTree
ClickHouse ReplacingMergeTree: деректер тек фондық merge кезінде дедуплицирленеді. Merge-ге дейін сұраныстар дубликаттарды қайтарады. FINAL кілт сөзі оқу кезінде merge іске қосады — өнімділікті құртады.
Apache Doris Unique Key + Delete Bitmap: жаңартулар жазғаннан кейін бірден көрінеді. Partial column update қолдау көрсетіледі. FINAL қажет емес — деректер әр оқуда консистентті.
25% жаңартулары бар SSB бенчмаркінде Apache Doris ClickHouse-тан 5–34 есе жылдам нәтиже көрсетті — толығырақ «34x faster real-time updates» мақаласында.
CDC-интеграция: Flink CDC → Doris нативтік жұмыс істейді. ClickHouse-та ұқсас pipeline Kafka + materialized views + ReplacingMergeTree қажет етеді — баптау мен қолдау едәуір күрделірек.
6. Иелену құны (TCO)
TCO салыстырудағы негізгі факторлар:
| Лицензиялар | |
|---|---|
| Лицензиялар | Екі жоба да — Apache License 2.0. Лицензиялық төлемдер жоқ. |
| Инфрақұрылым | ClickHouse: қолмен шардтау, ClickHouse Keeper, қолмен ребалансинг. Doris: шардтар мен репликаларды автоматты басқару — ops-жұмыс аз. |
| Инженерлер | ClickHouse арнайы сараптама қажет етеді: merge саясаттары, шардтау, FINAL. Doris MySQL-үйлесімді — мамандар пулы кеңірек. |
| Сақтау | Сығымдау сәйкес (екеуі де колоночтық). Бірақ Doris merge-ге дейінгі ReplacingMergeTree-ге тән деректер дублирлеуін болдырмайды. |
| Экожүйе | ClickHouse community үлкен, бірақ тулинг фрагменттелген. Doris кез келген MySQL-үйлесімді құралға қосылады — әмбебап BI-экожүйе. |
7. ClickHouse-тен көшу кейстері
Kwai / Bleem (триллиондаған жарнама жолдары)
ClickHouse + Elasticsearch-ті бір Apache Doris-ке біріктіру (Bleem платформасы). Нәтиже: күніне ~1 млрд сұраныс, архитектура жеңілдеуі.
Enterprise-компаниялар (жариялы кейстер)
doris.apache.org-та көптеген enterprise-кейстер: финтех, ритейл, телеком. Көшудің типтік себебі — бір жүйеде JOIN + real-time updates қажеттілігі.
Көшу тәсілі
SQL негізінен үйлесімді. Негізгі өзгерістер: кесте қозғалтқыштарын маппинг (MergeTree → Duplicate Key, ReplacingMergeTree → Unique Key, AggregatingMergeTree → Aggregate Key).
8. ClickHouse қашан жақсырақ
ClickHouse нақты сценарийлерде тамаша таңдау болып қала береді:
- Append-only деректердегі таза single-table агрегациялар: логтар, метрикалар, time-series жаңартусыз.
- Multi-table JOIN немесе real-time updates қажеттілігі жоқ.
- Materialized views дедупликацияны шешіп тұрған бар кластер.
- ClickHouse-та терең сараптамасы бар және жүйелерді біріктіру жоспары жоқ команда.
Бірақ: JOIN + updates + SQL-толықтығы қажет болса → Doris жеңеді.