Что такое Apache Doris, как его использовать для построения хранилища данных и чем это отличается от ClickHouse. Сценарии применения и критерии выбора основы DWH.
Что такое Apache Doris
Недавно мы рассматривали, почему ClickHouse подходит для реализации хранилища данных на основе эталонной архитектуры Medallion благодаря поддержке более 70 форматов файлов, материализованным представлениям и интеграциями со множеством внешних систем и ETL-инструментов. Однако, слоистый характер Medallion вносит задержку в доступность данных из-за их систематического перемещения по слоям. Поэтому такая архитектура не очень подходит для сценариев реального времени, где критична доступность данных с минимальной задержкой. Избежать этого можно, используя альтернативные решения для построения хранилища данных. Одним из них может стать Apache Doris — хранилище данных в реальном времени с массово-параллельной обработкой (MPP, Massive Parallel Processing) на основе Google Mesa и Apache Impala.
Написанный на Java, Apache Doris работает довольно быстро, возвращая результаты запросов к большим наборам данных за доли секунды. Оно поддерживает конкурентные точечные и сложные аналитические запросы. Его можно использовать для анализа отчетов, специальных запросов, унифицированного DWH и ускорения запросов к озеру данных. На основе Apache Doris можно создавать аналитические приложения и платформы A/B-тестирования.
Изначально Apache Doris, ранее известный как Palo, был разработан компанией Baidu для собственных нужд по рекламной аналитике. В июле 2018 году проект с открытым исходным кодом был передан в Apache Software Foundation. Сегодня Doris используется более чем в 4000 компаний по всему миру в различных отраслях: от финансов, торговли и телекоммуникаций до энергетики, производства, здравоохранения и пр.
Будучи реляционной СУБД, Apache Doris использует протокол MySQL и поддерживает ANSI SQL. В архитектуре Doris есть два типа процессов:
- Frontend (FE) отвечает за обработку запросов пользователей, анализ и планирование запросов, управление метаданными и задачи, связанные с управлением узлами;
- Backend(BE) отвечает за хранение данных на нескольких сегментах с несколькими репликами и выполнение планов запросов.
Для аварийного восстановления и резервного копирования можно развернуть несколько узлов FE. Каждый FE поддерживает полную копию метаданных. Процессы FE и BE масштабируются горизонтально, что позволяет одному кластеру поддерживать сотни машин и десятки петабайт емкости хранения. Процессы FE и BE обеспечивают высокую доступность и надежность данных с помощью протоколов согласованности. Интегрированная архитектура вычислений и хранения данных отличается высокой консолидацией, снижая эксплуатационные расходы.
Apache Doris обеспечивает высокую доступность благодаря репликации метаданных и данных и синхронизации логов через протокол кворума. Запись данных считается успешной, когда большинство реплик завершают запись, гарантируя, что кластер останется доступным даже при отказе нескольких узлов. Когда некоторые узлы выходят из строя, кластер может автоматически изолировать неисправные узлы, предотвращая влияние на общую доступность кластера.
Подобно Clickhouse, Apache Doris имеет колоночный механизм хранения, который кодирует, сжимает и считывает данные по столбцам. Это обеспечивает очень высокую степень сжатия данных и сокращает ненужное сканирование данных, более эффективно утилизируя ресурсы ввода-вывода и ЦП. Кроме того, для минимизации сканирования данных Apache Doris поддерживает различные структуры индексов.
Еще одним сходством Apache Doris с Clickhouse является векторный MPP-механизм параллельного выполнения запросов. Колоночный формат всех структур памяти позволяет сократить вызовы виртуальных функций, увеличить частоту попаданий в кэш и эффективно использовать инструкции SIMD, ускоряя производительность агрегации широких таблиц.
ClickHouse vs Apache Doris
Хотя ClickHouse можно использовать для эффективного хранения и анализа данных временных рядов, в некоторых сценариях при работе с такими данными могут возникнуть сложности. В частности, когда данные необходимо получать небольшими партиями, чтобы анализировать в режиме реального времени. В свою очередь, Apache Doris может эффективно использоваться с данными временных рядов для аналитики и отчетности в реальном времени. Благодаря высокой производительности и минимальным временем отклика (менее секунды) Doris может обрабатывать огромные объемы данных с временными метками и предоставлять своевременные результаты запросов. Это делает его пригодным для анализа данных временных рядов с различными уровнями сложности.
ClickHouse оптимизирован для высокоскоростной обработки больших объемов данных в широких таблицах благодаря своей колонной архитектуре и эффективным алгоритмам сжатия. Однако при работе с несколькими таблицами, федеративными запросами и соединениями в ClickHouse возникают сложности по следующим причинам:
- Колоночная структура хранения данных отлично подходит для аналитических запросов над одной таблицей. Однако, операции соединения требуют доступа к данным из нескольких таблиц, увеличивая объём обрабатываемых данных и снижая скорость выполнения запросов.
- отсутствие индексов – в отличие от традиционных реляционных баз данных, ClickHouse не использует индексы для ускорения операций соединений. Поэтому при соединении таблиц приходится выполнять полное сканирование соответствующих колонок, что менее эффективно.
- федеративные запросы предполагают выполнение запросов над данными, хранящимися в разных источниках или кластерах. Но ClickHouse изначально спроектирован для работы с данными внутри одного кластера.
- фокус на обработке аналитических запросов с агрегацией и фильтрацией. Операции соединений и работы с множественными таблицами чаще встречаются в транзакционных системах.
В свою очередь, Doris отлично справляется с высококонкурентными запросами и запросами на соединение, а несколько видов индексов позволяют ускорить поиска. Кроме того, Doris поддерживает крупномасштабное обновление и высокочастотную запись в реальном времени, а также частичное обновление столбцов.
Хотя ClickHouse и Apache Doris используют MPP-архитектуру и колоночный формат хранения данных, поддерживают горизонтальное масштабирование и SQL-подобный язык запросов и оптимизированы для выполнения сложных аналитических сценариев в реальном времени, в некоторых случаях они сильно отличаются. Apache Doris предоставляет более расширенную поддержку транзакций. Это делает его более подходящим для хранения часто меняющихся данных, требующих согласованности данных при одновременных операциях записи и чтения.
Если важна высокая производительность аналитических запросов к огромным объемам данных с минимальным временем отклика, ClickHouse может быть отличным выбором. В свою очередь, Apache Doris неплохо подойдет для смешанных нагрузок, строгой транзакционной согласованности и гибкости в управлении данными.
Освойте ClickHouse на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники