## 🌍 Читать на других языках
[العربية](../ar-SA/README.md) • [বাংলা](../bn-BD/README.md) • [Deutsch](../de-DE/README.md) • [English](../../README.md) • [Español](../es-ES/README.md) • [فارسی](../fa-IR/README.md) • [Français](../fr-FR/README.md) • [हिन्दी](../hi-IN/README.md) • [Bahasa Indonesia](../id-ID/README.md) • [Italiano](../it-IT/README.md) • [日本語](../ja-JP/README.md) • [한국어](../ko-KR/README.md) • [Polski](../pl-PL/README.md) • [Português](../pt-BR/README.md) • [Română](../ro-RO/README.md) • [Русский](README.md) • [Slovenščina](../sl-SI/README.md) • [ไทย](../th-TH/README.md) • [Türkçe](../tr-TR/README.md) • [Українська](../uk-UA/README.md) • [Tiếng Việt](../vi-VN/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
# Apache Doris
[](https://www.apache.org/licenses/LICENSE-2.0.html)
[](https://github.com/apache/doris/releases)
[](https://ossrank.com/p/516)
[](https://github.com/apache/doris/commits/master/)
[](https://doris.apache.org/docs/gettingStarted/what-is-apache-doris)
[](https://doris.apache.org/zh-CN/docs/gettingStarted/what-is-apache-doris)
[![Official Website]()](https://doris.apache.org/)
[![Quick Download]()](https://doris.apache.org/download)
---
Apache Doris — это простая в использовании, высокопроизводительная аналитическая база данных в реальном времени на основе архитектуры MPP, известная своей чрезвычайной скоростью и простотой использования. Она требует всего лишь субсекундного времени отклика для возврата результатов запросов при работе с массивными данными и может поддерживать не только сценарии точечных запросов с высокой параллельностью, но и сценарии сложного анализа с высокой пропускной способностью.
Все это делает Apache Doris идеальным инструментом для сценариев, включающих анализ отчетов, специальные запросы, единое хранилище данных и ускорение запросов к озеру данных. На Apache Doris пользователи могут создавать различные приложения, такие как анализ поведения пользователей, платформа AB-тестирования, анализ поиска логов, анализ профиля пользователя и анализ заказов.
🎉 Ознакомьтесь с 🔗[Всеми релизами](https://doris.apache.org/docs/releasenotes/all-release), где вы найдете хронологическое резюме версий Apache Doris, выпущенных за последний год.
👀 Изучите 🔗[Официальный веб-сайт](https://doris.apache.org/), чтобы подробно узнать об основных функциях, блогах и примерах использования Apache Doris.
## 📈 Сценарии использования
Как показано на рисунке ниже, после различных интеграций и обработки данных источники данных обычно хранятся в хранилище данных реального времени Apache Doris и автономном озере данных или хранилище данных (в Apache Hive, Apache Iceberg или Apache Hudi).
Apache Doris широко используется в следующих сценариях:
- **Анализ данных в реальном времени**:
- **Отчетность и принятие решений в реальном времени**: Doris предоставляет обновляемые в реальном времени отчеты и панели мониторинга как для внутреннего, так и для внешнего корпоративного использования, поддерживая принятие решений в реальном времени в автоматизированных процессах.
- **Специальный анализ**: Doris предлагает возможности многомерного анализа данных, обеспечивая быстрый анализ бизнес-аналитики и специальные запросы, чтобы помочь пользователям быстро выявить инсайты из сложных данных.
- **Профилирование пользователей и анализ поведения**: Doris может анализировать поведение пользователей, такое как участие, удержание и конверсия, а также поддерживать сценарии, такие как демографические инсайты и выбор групп для анализа поведения.
- **Аналитика озера данных**:
- **Ускорение запросов к озеру данных**: Doris ускоряет запросы к данным озера данных с помощью своего эффективного механизма запросов.
- **Федеративная аналитика**: Doris поддерживает федеративные запросы по нескольким источникам данных, упрощая архитектуру и устраняя изоляцию данных.
- **Обработка данных в реальном времени**: Doris объединяет возможности обработки потоков данных в реальном времени и пакетной обработки данных для удовлетворения потребностей высокой параллельности и низкой задержки сложных бизнес-требований.
- **Наблюдаемость на основе SQL**:
- **Анализ логов и событий**: Doris обеспечивает анализ логов и событий в реальном времени или пакетный анализ в распределенных системах, помогая выявлять проблемы и оптимизировать производительность.
## Общая архитектура
Apache Doris использует протокол MySQL, имеет высокую совместимость с синтаксисом MySQL и поддерживает стандартный SQL. Пользователи могут получить доступ к Apache Doris через различные клиентские инструменты, и он бесшовно интегрируется с инструментами BI.
### Интегрированная архитектура хранения и вычислений
Интегрированная архитектура хранения и вычислений Apache Doris упрощена и проста в обслуживании. Как показано на рисунке ниже, она состоит только из двух типов процессов:
- **Frontend (FE):** В основном отвечает за обработку пользовательских запросов, разбор и планирование запросов, управление метаданными и задачи управления узлами.
- **Backend (BE):** В основном отвечает за хранение данных и выполнение запросов. Данные разделяются на сегменты и хранятся с несколькими репликами на узлах BE.

В производственной среде можно развернуть несколько узлов FE для аварийного восстановления. Каждый узел FE поддерживает полную копию метаданных. Узлы FE разделены на три роли:
| Роль | Функция |
| --------- | ------------------------------------------------------------ |
| Master | Узел FE Master отвечает за операции чтения и записи метаданных. Когда изменения метаданных происходят в Master, они синхронизируются с узлами Follower или Observer через протокол BDB JE. |
| Follower | Узел Follower отвечает за чтение метаданных. Если узел Master выходит из строя, узел Follower может быть выбран в качестве нового Master. |
| Observer | Узел Observer отвечает за чтение метаданных и в основном используется для увеличения параллелизма запросов. Он не участвует в выборах лидера кластера. |
Как процессы FE, так и BE масштабируются горизонтально, что позволяет одному кластеру поддерживать сотни машин и десятки петабайт емкости хранения. Процессы FE и BE используют протокол согласованности для обеспечения высокой доступности сервисов и высокой надежности данных. Интегрированная архитектура хранения и вычислений высоко интегрирована, значительно снижая операционную сложность распределенных систем.
## Основные функции Apache Doris
- **Высокая доступность**: В Apache Doris как метаданные, так и данные хранятся с несколькими репликами, синхронизируя журналы данных через протокол кворума. Запись данных считается успешной, как только большинство реплик завершили запись, гарантируя, что кластер остается доступным, даже если несколько узлов выходят из строя. Apache Doris поддерживает аварийное восстановление как в пределах одного города, так и между регионами, обеспечивая режимы мастер-подчиненный с двойным кластером. Когда некоторые узлы испытывают сбои, кластер может автоматически изолировать неисправные узлы, предотвращая влияние на общую доступность кластера.
- **Высокая совместимость**: Apache Doris имеет высокую совместимость с протоколом MySQL и поддерживает стандартный синтаксис SQL, охватывая большинство функций MySQL и Hive. Эта высокая совместимость позволяет пользователям бесшовно мигрировать и интегрировать существующие приложения и инструменты. Apache Doris поддерживает экосистему MySQL, позволяя пользователям подключаться к Doris с помощью инструментов клиента MySQL для более удобных операций и обслуживания. Он также поддерживает совместимость протокола MySQL для инструментов отчетности BI и инструментов передачи данных, обеспечивая эффективность и стабильность процессов анализа данных и передачи данных.
- **Хранилище данных в реальном времени**: На основе Apache Doris можно построить сервис хранилища данных в реальном времени. Apache Doris предлагает возможности приема данных на уровне секунд, захватывая инкрементальные изменения из вышестоящих онлайн-транзакционных баз данных в Doris в течение секунд. Используя векторизованные движки, архитектуру MPP и движки выполнения Pipeline, Doris обеспечивает возможности запросов данных на уровне субсекунд, тем самым создавая высокопроизводительную платформу хранилища данных в реальном времени с низкой задержкой.
- **Единое озеро данных**: Apache Doris может построить единую архитектуру озера данных на основе внешних источников данных, таких как озера данных или реляционные базы данных. Решение единого озера данных Doris обеспечивает бесшовную интеграцию и свободный поток данных между озерами данных и хранилищами данных, помогая пользователям напрямую использовать возможности хранилища данных для решения проблем анализа данных в озерах данных, при этом полностью используя возможности управления данными озера данных для повышения ценности данных.
- **Гибкое моделирование**: Apache Doris предлагает различные подходы к моделированию, такие как модели широких таблиц, модели предварительной агрегации, схемы звезды/снежинки и т. д. Во время импорта данных данные могут быть сведены в широкие таблицы и записаны в Doris через вычислительные движки, такие как Flink или Spark, или данные могут быть напрямую импортированы в Doris, выполняя операции моделирования данных через представления, материализованные представления или соединения нескольких таблиц в реальном времени.
## Технический обзор
Doris предоставляет эффективный интерфейс SQL и полностью совместим с протоколом MySQL. Его механизм запросов основан на архитектуре MPP (массово параллельная обработка), способной эффективно выполнять сложные аналитические запросы и достигать запросов в реальном времени с низкой задержкой. Благодаря технологии колоночного хранения для кодирования и сжатия данных он значительно оптимизирует производительность запросов и коэффициент сжатия хранилища.
### Интерфейс
Apache Doris принимает протокол MySQL, поддерживает стандартный SQL и имеет высокую совместимость с синтаксисом MySQL. Пользователи могут получить доступ к Apache Doris через различные клиентские инструменты и бесшовно интегрировать его с инструментами BI, включая, но не ограничиваясь Smartbi, DataEase, FineBI, Tableau, Power BI и Apache Superset. Apache Doris может работать как источник данных для любых инструментов BI, которые поддерживают протокол MySQL.
### Механизм хранения
Apache Doris имеет колоночный механизм хранения, который кодирует, сжимает и читает данные по столбцам. Это обеспечивает очень высокий коэффициент сжатия данных и значительно снижает ненужное сканирование данных, что делает более эффективное использование ресурсов IO и CPU.
Apache Doris поддерживает различные структуры индексов для минимизации сканирования данных:
- **Индекс отсортированного составного ключа**: Пользователи могут указать максимум три столбца для формирования составного ключа сортировки. Это может эффективно обрезать данные для лучшей поддержки сценариев отчетности с высокой параллельностью.
- **Индекс Min/Max**: Это обеспечивает эффективную фильтрацию данных в запросах эквивалентности и диапазона числовых типов.
- **Индекс BloomFilter**: Это очень эффективно при фильтрации эквивалентности и обрезке столбцов с высокой кардинальностью.
- **Обратный индекс**: Это обеспечивает быстрый поиск для любого поля.
Apache Doris поддерживает различные модели данных и оптимизировал их для разных сценариев:
- **Модель деталей (Модель дублирующегося ключа):** Модель данных деталей, разработанная для удовлетворения детальных требований к хранению таблиц фактов.
- **Модель первичного ключа (Модель уникального ключа):** Обеспечивает уникальные ключи; данные с тем же ключом перезаписываются, что позволяет обновлять данные на уровне строк.
- **Модель агрегации (Модель ключа агрегации):** Объединяет столбцы значений с тем же ключом, значительно улучшая производительность за счет предварительной агрегации.
Apache Doris также поддерживает строго согласованные материализованные представления с одной таблицей и асинхронно обновляемые материализованные представления с несколькими таблицами. Материализованные представления с одной таблицей автоматически обновляются и поддерживаются системой, не требуя ручного вмешательства пользователей. Материализованные представления с несколькими таблицами могут периодически обновляться с использованием планирования внутри кластера или внешних инструментов планирования, снижая сложность моделирования данных.
### 🔍 Механизм запросов
Apache Doris имеет механизм запросов на основе MPP для параллельного выполнения между узлами и внутри узлов. Он поддерживает распределенное перемешивание соединений для больших таблиц для лучшей обработки сложных запросов.

Механизм запросов Apache Doris полностью векторизован, со всеми структурами памяти, расположенными в колоночном формате. Это может значительно уменьшить виртуальные вызовы функций, увеличить частоту попаданий в кэш и эффективно использовать инструкции SIMD. Apache Doris обеспечивает производительность в 5-10 раз выше в сценариях агрегации широких таблиц по сравнению с невекторизованными механизмами.

Apache Doris использует технологию адаптивного выполнения запросов для динамической корректировки плана выполнения на основе статистики времени выполнения. Например, он может генерировать фильтр времени выполнения и передавать его на сторону зонда. Конкретно, он передает фильтры на узел сканирования самого низкого уровня на стороне зонда, что значительно уменьшает объем данных для обработки и увеличивает производительность соединения. Фильтр времени выполнения Apache Doris поддерживает In/Min/Max/Bloom Filter.
Apache Doris использует механизм выполнения Pipeline, который разбивает запросы на несколько подзадач для параллельного выполнения, полностью используя возможности многоядерного процессора. Он одновременно решает проблему взрыва потоков, ограничивая количество потоков запросов. Механизм выполнения Pipeline уменьшает копирование и совместное использование данных, оптимизирует операции сортировки и агрегации, тем самым значительно улучшая эффективность запросов и пропускную способность.
С точки зрения оптимизатора, Apache Doris использует комбинированную стратегию оптимизации CBO (оптимизатор на основе стоимости), RBO (оптимизатор на основе правил) и HBO (оптимизатор на основе истории). RBO поддерживает свертку констант, переписывание подзапросов, проталкивание предикатов и многое другое. CBO поддерживает переупорядочивание соединений и другие оптимизации. HBO рекомендует оптимальный план выполнения на основе исторической информации о запросах. Эти множественные меры оптимизации обеспечивают, что Doris может перечислять высокопроизводительные планы запросов для различных типов запросов.
## 🎆 Почему выбрать Apache Doris?
- 🎯 **Простота использования**: Два процесса, никаких других зависимостей; масштабирование кластера в режиме онлайн, автоматическое восстановление реплик; совместимость с протоколом MySQL и использование стандартного SQL.
- 🚀 **Высокая производительность**: Чрезвычайно быстрая производительность для запросов с низкой задержкой и высокой пропускной способностью с колоночным механизмом хранения, современной архитектурой MPP, векторизованным механизмом запросов, предварительно агрегированным материализованным представлением и индексом данных.
- 🖥️ **Единая система**: Одна система может поддерживать сценарии обслуживания данных в реальном времени, интерактивного анализа данных и автономной обработки данных.
- ⚛️ **Федеративные запросы**: Поддерживает федеративные запросы к озерам данных, таким как Hive, Iceberg, Hudi, и базам данных, таким как MySQL и Elasticsearch.
- ⏩ **Различные методы импорта данных**: Поддерживает пакетный импорт из HDFS/S3 и потоковый импорт из MySQL Binlog/Kafka; поддерживает микропакетную запись через HTTP-интерфейс и запись в реальном времени с использованием Insert в JDBC.
- 🚙 **Богатая экосистема**: Spark использует Spark-Doris-Connector для чтения и записи Doris; Flink-Doris-Connector позволяет Flink CDC реализовать запись данных ровно один раз в Doris; предоставляется DBT Doris Adapter для преобразования данных в Doris с помощью DBT.
## 🙌 Участники
**Apache Doris успешно завершил инкубатор Apache и стал проектом верхнего уровня в июне 2022 года**.
Мы глубоко ценим 🔗[участников сообщества](https://github.com/apache/doris/graphs/contributors) за их вклад в Apache Doris.
[](https://github.com/apache/doris/graphs/contributors)
## 👨👩👧👦 Пользователи
Apache Doris теперь имеет широкую пользовательскую базу в Китае и по всему миру, и на сегодняшний день **Apache Doris используется в производственных средах в тысячах компаний по всему миру.** Более 80% из 50 ведущих интернет-компаний Китая с точки зрения рыночной капитализации или оценки долгое время используют Apache Doris, включая Baidu, Meituan, Xiaomi, Jingdong, Bytedance, Tencent, NetEase, Kwai, Sina, 360, Mihoyo и Ke Holdings. Он также широко используется в некоторых традиционных отраслях, таких как финансы, энергетика, производство и телекоммуникации.
Пользователи Apache Doris: 🔗[Пользователи](https://doris.apache.org/users)
Добавьте логотип вашей компании на веб-сайт Apache Doris: 🔗[Добавить вашу компанию](https://github.com/apache/doris/discussions/27683)
## 👣 Начать работу
### 📚 Документация
Вся документация 🔗[Документация](https://doris.apache.org/docs/gettingStarted/what-is-apache-doris)
### ⬇️ Загрузка
Все версии релизов и бинарные версии 🔗[Загрузка](https://doris.apache.org/download)
### 🗄️ Компиляция
См. как скомпилировать 🔗[Компиляция](https://doris.apache.org/community/source-install/compilation-with-docker))
### 📮 Установка
См. как установить и развернуть 🔗[Установка и развертывание](https://doris.apache.org/docs/install/preparation/env-checking)
## 🧩 Компоненты
### 📝 Doris Connector
Doris предоставляет поддержку для Spark/Flink для чтения данных, хранящихся в Doris, через Connector, а также поддерживает запись данных в Doris через Connector.
🔗[apache/doris-flink-connector](https://github.com/apache/doris-flink-connector)
🔗[apache/doris-spark-connector](https://github.com/apache/doris-spark-connector)
## 🌈 Сообщество и поддержка
### 📤 Подписка на списки рассылки
Список рассылки — это наиболее признанная форма общения в сообществе Apache. См. как 🔗[Подписаться на списки рассылки](https://doris.apache.org/community/subscribe-mail-list)
### 🙋 Сообщить о проблемах или отправить Pull Request
Если у вас есть вопросы, не стесняйтесь создать 🔗[GitHub Issue](https://github.com/apache/doris/issues) или опубликовать его в 🔗[GitHub Discussion](https://github.com/apache/doris/discussions) и исправить, отправив 🔗[Pull Request](https://github.com/apache/doris/pulls)
### 🍻 Как внести вклад
Мы приветствуем ваши предложения, комментарии (включая критические замечания), комментарии и вклады. См. 🔗[Как внести вклад](https://doris.apache.org/community/how-to-contribute/) и 🔗[Руководство по отправке кода](https://doris.apache.org/community/how-to-contribute/pull-request/)
### ⌨️ Предложения по улучшению Doris (DSIP)
🔗[Предложение по улучшению Doris (DSIP)](https://cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals) можно рассматривать как **Коллекцию проектных документов для всех основных обновлений или улучшений функций**.
### 🔑 Спецификация кодирования Backend C++
🔗 [Спецификация кодирования Backend C++](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=240883637) должна строго соблюдаться, что поможет нам достичь лучшего качества кода.
## 💬 Свяжитесь с нами
Свяжитесь с нами через следующий список рассылки.
| Имя | Область | | | |
|:------------------------------------------------------------------------------|:--------------------------------|:----------------------------------------------------------------|:--------------------------------------------------------------------|:-----------------------------------------------------------------------------|
| [dev@doris.apache.org](mailto:dev@doris.apache.org) | Обсуждения, связанные с разработкой | [Подписаться](mailto:dev-subscribe@doris.apache.org) | [Отписаться](mailto:dev-unsubscribe@doris.apache.org) | [Архивы](http://mail-archives.apache.org/mod_mbox/doris-dev/) |
## 🧰 Ссылки
* Официальный веб-сайт Apache Doris - [Сайт](https://doris.apache.org)
* Список рассылки разработчиков - . Отправьте письмо на , следуйте ответу, чтобы подписаться на список рассылки.
* Канал Slack - [Присоединиться к Slack](https://join.slack.com/t/apachedoriscommunity/shared_invite/zt-35mzao67o-BrpU70FNKPyB6UlgpXf8_w)
* Twitter - [Подписаться на @doris_apache](https://twitter.com/doris_apache)
## 📜 Лицензия
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
> **Примечание**
> Некоторые лицензии зависимостей третьих сторон несовместимы с лицензией Apache 2.0. Поэтому вам нужно отключить
некоторые функции Doris для соответствия лицензии Apache 2.0. Для подробностей см. файл `thirdparty/LICENSE.txt`