Благодаря постоянному развитию таких технологий, как Интернет, Интернет вещей, 5G, искусственный интеллект и облачные вычисления, в Интернете генерируется все больше и больше данных, и работа Интернета стала более совершенной. данные, анализ данных и цифровой маркетинг. Это стало предметом внимания каждой интернет-компании. OLAP и OLTP — это технологии, с которыми мы обязательно столкнемся при анализе данных. Прежде чем перейти к выбору технологии механизма OLAP, давайте сначала посмотрим, что означают эти две технологии.
OLTP (онлайн-обработка транзакций OnlineTransactionProcessing),да Традицияреляционная база данныхизприкладная технология,Обеспечить ежедневную и базовую обработку транзакций,Например, онлайн-транзакции и т. д.。OLAP (онлайн-аналитическая обработка),дабольшие данныеанализироватьизприкладная технология,Обеспечьте комплексные аналитические операции и сосредоточьтесь на поддержке принятия решений. Текущие основные движки isOLAP включают Hive, Presto, Druid, Clickhouse, Kylin, Sparksql, Greeplum.,Каждый двигатель имеет свои особенности
OLAP (On-line Analytical Processing) — совокупность различных ориентированных на анализ операций, реализованных на основе многомерной модели хранилища данных. Вы можете сравнить его с традиционной OLTP (онлайн-обработкой транзакций), чтобы увидеть его характеристики:
OLAP — это метод вычислений, который позволяет пользователям удобно и быстро анализировать данные с разных точек зрения. Основной поток OLAP можно разделить на три категории:
1. Многомерная OLAP (Многомерная OLAP)、
2. Реляционная OLAP
3. Гибридный OLAP Три основные категории.
MOLAP основан на собственной логической модели, которая напрямую поддерживает многомерные данные и операции. Данные физически хранятся в многомерных массивах, и для доступа к ним используются методы позиционирования.
MOLAPАрхитектура СодержитСлужба базы данныхустройство、Сервер MOLAP и интерфейсный инструмент, три компонента.
Типичными представителями МОЛАП являются: Друид и Кайлин. MOLAP обычно генерирует предварительно агрегированные данные при записи данных на основе определяемых пользователем измерений и показателей (также называемых индикаторами). Когда приходит запрос Query, он фактически запрашивает предварительно агрегированные данные вместо исходных подробных данных. относительно фиксированных сценариях такое ускорение оптимизации очевидно.
MOLAP Преимущества и недостатки связаны с предварительной обработкой данных. ( pre-processing ) связь。Предварительная обработка данных,Исходные данные агрегируются и заранее рассчитываются по заданным правилам расчета.,Это позволяет избежать выполнения большого количества вычислений в процессе запроса.,Улучшена производительность запросов.
Однако такая предварительная обработка требует предварительного определения измерений, что ограничивает гибкость последующих запросов данных, если запрос включает новые показатели, процесс предварительной обработки необходимо добавлять снова, что приводит к потере гибкости и высокой эффективности; затраты на хранение; в то же время этот метод не поддерживает подробный запрос данных и подходит только для агрегированных запросов (таких как сумма, среднее значение, количество).
Таким образом, MOLAP подходит для сценариев, в которых сценарий запроса относительно фиксирован и имеет очень высокие требования к производительности запроса. Например, анализ отчетов о доставке рекламы часто используется рекламодателями.
Реляционная OLAP (ROLAP) — это промежуточные серверы, которые находятся между реляционными внутренними серверами и пользовательскими интерфейсными инструментами, которые используют реляционную или расширенную реляционную СУБД для сохранения и обработки данных хранилища, а также используют промежуточное программное обеспечение OLAP для предоставления недостающих данных.
Архитектура ROLAP показана ниже и включает в себя сервер базы данных, сервер ROLAP и интерфейсные инструменты.
Типичными представителями ROLAP являются: Presto, Impala, GreenPlum, Clickhouse, Elasticsearch, Hive, Spark SQL, Flink SQL.
Преимущества ROLAP заключаются в следующих двух аспектах:
Во-первых, при записи данных ROLAP не использует технологию предварительного агрегирования, такую как MOLAP. Когда ROLAP получает запрос запроса, он сначала анализирует запрос, генерирует план выполнения, сканирует данные, выполняет реляционные операторы и выполняет фильтрацию (Where), агрегацию (Sum, Avg, Count), ассоциацию (Join) и группировку. по исходным данным (Группировать по), сортировать (Упорядочить по) и т. д. и, наконец, возвращать результаты расчета пользователю. Весь процесс рассчитывается в реальном времени, и для оптимизации запроса нет предварительно агрегированных данных. Все, что имеет значение, — это размер ресурсов и вычислительная мощность.
Во-вторых, ROLAP не требует предварительной обработки данных (предобработки), поэтому запрос является гибким и имеет хорошую масштабируемость. Механизм этого типа использует архитектуру MPP (крупномасштабную архитектуру параллельной обработки, аналогичную Hadoop, которая позволяет увеличить вычислительные ресурсы за счет расширения параллелизма) и может эффективно обрабатывать большие объемы данных.
Однако у ROLAP есть и недостатки: когда объем данных велик или запрос сложен, производительность запроса не может быть такой стабильной, как MOLAP. Все вычисления запускаются немедленно (без предварительной обработки), поэтому они потребляют больше вычислительных ресурсов и приводят к возможным повторным вычислениям.
Таким образом, ROLAP подходит для сценариев, в которых режим запроса не фиксирован и гибкость запросов высока. Например, продукты анализа данных, обычно используемые аналитиками данных, часто выполняют различные заранее определенные анализы данных, поэтому они требуют более высокой гибкости запросов.
Гибридный OLAP представляет собой сочетание MOLAP и ROLAP. При запросе агрегированных данных используйте технологию MOLAP; при запросе подробных данных используйте технологию ROLAP; В соответствии с заданными сценариями использования, чтобы добиться оптимизации производительности запросов. Техническая архитектура гибридного OLAP выглядит следующим образом:
Преимущество гибридного OLAP в том, что он сочетает в себе преимущества MOLAP и ROLAP и обеспечивает быстрый доступ ко всем уровням агрегации. А еще потому, что он хранит только совокупную информацию на сервере OLAP, а подробные записи хранятся в реляционной базе данных. Таким образом, дубликаты подробных записей не сохраняются, что позволяет сбалансировать требования к дисковому пространству.
Недостаток гибридного OLAP заключается в том, что он объединяет MOLAP и ROLAP, поэтому ему необходимо поддерживать как MOLAP, так и ROLAP, а его архитектура также очень сложна.
В дополнение к этому включены некоторые другие классификации, в том числе OLAP с поддержкой Интернета (WOLAP), настольная OLAP (DOLAP), мобильная OLAP (MOLAP) и пространственная OLAP (SOLAP). Но в целом он не очень популярен, поэтому больше вводить его не будет.
В соответствии с реализацией архитектуры основные механизмы OLAP в основном делятся на следующие три категории:
Выбор структуры необходимо рассматривать с учетом следующих трех аспектов: хранение и создание данных, установка и строительство, а также затраты на разработку.
Преимущества OLAP основаны на предметно-ориентированном, интегрированном, историческом и неизменяемом хранилище данных, а также на многомерной модели, многоперспективной и многоуровневой организации данных. Без этих двух пунктов OLAP. уже не будет и не будет. Есть о каких преимуществах можно говорить.
Несколько операций OLAP, описанных ниже, предназначены для схем Кимбалла «Звезда» и «Снежинка». В модели Кимбалла определены факты и измерения.
Свертывание/агрегирование: выберите определенные измерения и агрегируйте факты на основе этих измерений, если они выражены в SQL, выберите dim_a, aggs_func(fact_b) из группы fact_table с помощью детализации dim_a: свертывание детализации — это противоположная операция. Он выбирает определенные измерения, разбирает их на более мелкие измерения (например, годы на месяцы, провинции на города), а затем объединяет факты. Нарезка (Slicing, Dicing): выберите определенные измерения, отфильтруйте значения этих измерений в соответствии с конкретными значениями и разрежьте исходный большой куб на маленькие кубики. Например, dim_a в («CN», «США»). Поворот (Pivot/Rotate): смена позиций размеров. На рисунке ниже приведен конкретный пример:
Для нескольких механизмов OLAP с открытым исходным кодом, которые очень популярны в индустрии больших данных: Hive, SparkSQL, FlinkSQL, Clickhouse, Elasticsearch, Druid, Kylin, Doris, Presto и Impala, мы выбрали несколько сценариев для сравнения. Ни один механизм не может этого сделать. Чтобы достичь совершенства в объеме данных, гибкости и производительности, пользователям необходимо выбирать, исходя из своих собственных потребностей.
https://hive.apache.org/
Hive — это инструмент хранилища данных, основанный на Hadoop. Он может отображать файлы структурированных данных в таблицу базы данных и предоставлять полные функции SQL-запросов. Он может преобразовывать операторы SQL в задачи MapReduce для запуска. Его преимущество заключается в низкой стоимости обучения, простой статистике MapReduce можно быстро реализовать с помощью SQL-подобных операторов, и нет необходимости разрабатывать специальные приложения MapReduce. Он очень подходит для статистического анализа хранилищ данных.
Для hive он в основном ориентирован на приложенияOLAP.,его первый этаждаhdfsРаспределенная файловая система,Hive обычно используется только для анализа запросов и статистики.,И не может быть общей операции изCUD,Hive необходимо синхронизировать существующую базу данных и войти в файловую систему hdfs.,В настоящее время очень сложно добиться поэтапной синхронизации в реальном времени.
Преимущества Hive — полная поддержка SQL, чрезвычайно низкие затраты на обучение, настраиваемые форматы данных, чрезвычайно высокая масштабируемость, которую можно легко расширить до тысяч узлов и т. д.
Однако Hive не выполняет никакой обработки данных в процессе загрузки и даже не сканирует данные, поэтому некоторые ключи в данных не индексируются. Когда Hive хочет получить доступ к определенным значениям в данных, которые соответствуют условиям, ему необходимо перебором просканировать всю базу данных, поэтому задержка доступа высока.
Улей действительно слишком медленный. Для больших расчетов по агрегации данных или запросов к совместным таблицам времязатратность Hive зачастую может исчисляться часами. В определенный момент мне даже хотелось исключить его из «национальности» OLAP, но приходится признать, что Hive по-прежнему остается самым распространенным. использовалась система на базе механизма Hadoop.
Spark SQL、Flink SQL
В большинстве сценариев вычисления Hive по-прежнему слишком медленны. Не говоря уже о том, что они не могут удовлетворить потребности внешних онлайн-сервисов, которым требуется высокое количество запросов в секунду и низкая задержка запросов. Даже внутренние аналитики продуктов, операций и данных предприятия часто жалуются на Hive. Выполнение специальных запросов происходит слишком медленно. Эти болевые точки способствовали рождению и развитию итераций памяти MPP и вычислительных моделей DAG, таких как Spark. SQL、Flink Такие технологии, как SQL и Presto, также очень популярны на предприятиях. Искра SQL、Flink Скорость выполнения SQLиз быстреебыстрый,Богатый программный API,Поддержите обаПотоковые вычисленияс пакетной обработкой,И есть тенденция унификации партий,делатьбольшие Приложение данных еще проще. Примечание. Упомянутые выше онлайн-сервисы относятся к бизнес-консультантам по приложениям данных, открытым Alibaba для миллионов владельцев магазинов Taobao, а также к анализу рекламы в провинции Гуандиантун, разработанному Tencent для сотен тысяч рекламодателей.
Presto
Это официальное введение в Presto. Presto — это механизм распределенных SQL-запросов для больших данных с открытым исходным кодом от Facebook. Он подходит для запросов интерактивного анализа и может поддерживать множество источников данных, включая HDFS, RDBMS, KAFKA и т. д., а также обеспечивает очень удобный интерфейс для разработки соединителей источников данных.
Presto поддерживает стандарт ANSI SQL, включая сложные запросы, агрегацию, соединения и оконные функции. В качестве замены Hive и Pig (как Hive, так и Pig выполняют запрос данных HDFS через поток конвейера MapReduce), Presto не хранит данные сами, но может получать доступ к нескольким источникам данных и поддерживает каскадирование между источниками данных.
Presto не использует MapReduce, это делается с помощью специального механизма запросов и выполнения. Вся обработка запросов находится в памяти, что является одной из основных причин его высокой производительности. Presto имеет большое сходство со Spark SQL, что является наиболее фундаментальным отличием между ним и Hive.
Однако Presto основан на памяти, а hive читает и записывает на диск, поэтому presto намного быстрее, чем hive. Однако, поскольку это вычисления на основе памяти, ошибки переполнения памяти могут легко возникнуть, когда несколько больших таблиц связаны друг с другом.
Presto, Impala и GreenPlum основаны на архитектуре MPP по сравнению с простыми моделями Scatter-Gather, такими как Elasticsearch, Druid и Kylin, они более универсальны в поддержке вычислений SQL и больше подходят для сценариев специальных запросов. системы общего назначения часто лучше, чем специализированные системы. Оптимизировать производительность сложнее, поэтому они не подходят для запроса QPS (эталонное значение QPS). > 1000), требования к задержке относительно высоки (поиск опорного значения latency < 500мс)из Онлайн сервис,Он больше подходит для внутренних служб запросов компании и ускоренных служб запросов Hive. У Presto также есть отличная функция: он использует SQL стандарта ANSI.,и поддерживает более30+изисточник данныхConnector。Здесь мы даемУ читателей возникает вопрос: в чем причина большой разницы в производительности между моделью MPP, представленной Presto, и моделью MapReduce, представленной Hive?
Presto и Hive представляют две разные архитектуры обработки данных, а именно MPP (массовая параллельная обработка) и MapReduce. Разница в производительности в основном вызвана следующими факторами:
Impala да Cloudera получение Google из Dremel Вдохновлен разработкой интерактивного SQL в реальном времени. инструмент запроса данных, даCDH Предпочтительная платформа PB сортбольшие Механизм анализа запросов данных в реальном времени. Он обладает той же масштабируемостью, что и Hadoop, предоставляет синтаксис, подобный SQL (Hsql), а также может иметь высокую скорость ответа и пропускную способность в многопользовательских сценариях. Он реализуется на Java и C++. Java обеспечивает взаимодействие запросов, а C++ реализует часть механизма запросов. Кроме того, Impala также может совместно использовать Hive. Metastore, вы даже можете напрямую использовать HiveизJDBC. jarиbeeline и т. д. напрямую опрашивают Impala и поддерживают широкие форматы хранения данных (Parquet, Avro и т. д.). Кроме того, Импала Больше никакого использования медленного из Hive+MapReduce пакетную обработку и использование механизма распределенных запросов, аналогичного тому, который используется в коммерческих параллельных реляционных базах данных (управляемый Query Planner、Query Coordinator и Query Exec Engine состоит из трёх частей), которые можно получить непосредственно из HDFS или HBase Китайское использование SELECT、JOIN Статистические функции запрашивают данные, что значительно снижает задержку. Impala часто предоставляет услуги вместе с механизмом хранения Kudu. Самым большим преимуществом этого является то, что перечисление происходит быстрее и поддерживает обновление и удаление данных. Примечание:Часть контента взята изhttps://zhuanlan.zhihu.com/p/55197560
Особенности Импалы включают в себя:
https://druid.apache.org/
https://blog.csdn.net/warren288/article/details/80629909
Druid Он может обеспечить запросы уровня менее секунды и хранение данных для исторических данных и данных в реальном времени. Друид Поддержка приема данных с низкой задержкой,Гибкое исследование и анализ данных,Высокопроизводительная агрегация данных,Легко расширяется по горизонтали. Подходит для больших объемов данных,К системам аналитических запросов предъявляются высокие требования к масштабируемости.
Druidрешатьиз Вопросы включают в себя:данныеизбыстрыйбыстрый приемиданныеизбыстрый Быстрый запрос。 так что поймиDruid,Это нужно понимать как две системы.,То есть система ввода и система запросов.
Друидиз Архитектура выглядит следующим образом:
Возможности Друидиз включают в себя:
Аналогично другим базам данных временных рядов,У Druid могут возникнуть проблемы с производительностью, когда условия запроса затрагивают большой объем данных.,Более того, такие способности, как сортировка и агрегирование, как правило, не очень хороши.,Недостаточная гибкость и масштабируемость,Например, отсутствие Join, подзапроса и т. д.
Мое личное понимание Друидизма заключается в,Druid обеспечивает запись данных в реальном времени.,Подходит для ввода очищенных записей в режиме реального времени.,Затем быстро запросите результаты, содержащие историческую информацию.,Никакого практического применения в нашем нынешнем бизнесе это не имеет.
Информацию о приложениях Druid см. в разделе «Сценарии использования Druid и практика применения» https://blog.csdn.net/weixin_34273481/article/details/89238947.
http://kylin.apache.org/cn/ https://www.infoq.cn/article/kylin-apache-in-meituan-olap-scenarios-practice/
Когда дело доходит до Кайлина, нам приходится говорить о ROLAP и MOLAP.
Kylin сам по себе является системой MOLAP. Конструкция многомерного куба (MOLAP Cube) позволяет пользователям определять модели данных для более чем 10 миллиардов наборов данных в Kylin и создавать кубы для предварительного агрегирования данных.
Apache Kylin™ — это механизм распределенного анализа с открытым исходным кодом, который предоставляет интерфейс SQL-запросов и возможности многомерного анализа (OLAP) поверх Hadoop/Spark для поддержки сверхбольших данных. Первоначально он был разработан eBay. Inc. Развивайте и вносите вклад в сообщество открытого исходного кода. Он может запрашивать огромные таблицы Hive за доли секунды.
К преимуществам Килиниз можно отнести:
Итак, подходящие сцены для Килиниз включают в себя:
Проще говоря,Идея куба данных в Kylin заключается в обмене пространства на время.,Определив ряд из широт,Каждая комбинация широт заранее рассчитывается и сохраняется. Есть N широт,Комбинаций будет 2изN. Поэтому лучше всего контролировать широту и количество,Потому что емкость хранилища будет взрываться по мере увеличения широты.,привести к катастрофическим последствиям.
https://clickhouse.yandex/
https://clickhouse.yandex/docs/zh/development/architecture/
http://www.clickhouse.com.cn/
https://www.jianshu.com/p/a5bf490247ea
На официальном сайте ClickHouse представлены:
ClickHouse is an open source column-oriented database management system capable of real time generation of analytical data reports using SQL queries.
ClickHouseмаксимумиз Характеристикадабыстрый,быстрый,быстрый,Важно сказать это трижды!
ClickHouse стал популярен в последние годы наиз Столбчатая база данных с открытым исходным кодом, в основном используется в области анализа данных (OLAP). В настоящее время отечественное сообщество находится на подъеме, и крупные производители последовали его примеру и использовали его в больших масштабах:
За рубежом в Яндексе существуют сотни узлов, используемых для анализа поведения пользователей по кликам, их также используют ведущие компании, такие как CloudFlare и Spotify. Исходя из потребностей сценариев OLAP, ClickHouse настроил и разработал новый набор высокоэффективных механизмов столбчатого хранения, а также реализовал богатые функции, такие как упорядоченное хранилище данных, индекс первичного ключа, разреженный индекс, сегментирование данных, секционирование данных, TTL, первичный и разреженный индекс. резервную копию копировать. Вышеупомянутые функции вместе закладывают основу для чрезвычайно быстрого выполнения анализа ClickHouse. Примечание:Контент поступает изhttps://zhuanlan.zhihu.com/p/98135840 Развертывание Архитектуры ClickHouse просто и удобно в использовании и не зависит от системы Hadoop (HDFS+YARN). Лучше на месте да, чем на большом dataQuantity из Агрегационный запрос по одной таблице. Clickhouse реализован на C++, а базовая реализация имеет векторизованное выполнение. Выполнение), сокращение ветвей и другие возможности оптимизации.,Он имеет высокую производительность запросов. В настоящее время широко используется в интернет-компаниях.,Больше подходит для внутренних приложений BI-отчетности.,Может обеспечить низкую задержку (уровень мс) и скорость отклика.,То естьда Скажем, один запрос оченьбыстрый。нодаClickhouseтакже есть этоизограничение,При выборе технологии OLAP,Его следует избегать, так как запрос на соединение нескольких таблиц (JOIN) из движка,Вам также следует избегать его использования в сценариях, где вы ожидаете поддержки высококонкурентных запросов к данным.,В сценарии анализа OLAP,Обычно считается, что QPS достигает 1000+, что считается высоким параллелизмом.,В отличие от бизнес-сценариев, таких как электронная коммерция и захват красных конвертов,,10 Вт или более считается высоким уровнем параллелизма.,Ведь сценарии анализа данных,Массивные данные,Расчет сложный,Достичь 1000 QPS непросто. Например Кликхаус,Если объем данных соответствует уровню даTB,Агрегационные расчеты немного сложнее.,Как правило, для одного кластера очень сложно достичь показателя QPS 100.,Поэтому он больше подходит для внутренних приложений отчетов BI предприятия.,Он не подходит для отчетов о приложениях, связанных с сотнями тысяч рекламодателей или миллионами владельцев магазинов Taobao. Модель выполнения Clickhouse определяет, что она сделает все возможное для выполнения запроса.,Вместо одновременного выполнения множества запросов.
По сравнению с гигантскими компонентами, такими как Hadoop и Spark, ClickHouse очень легкий и имеет следующие функции:
Использование ClickHouse также имеет свои ограничения, в том числе:
Я думал,Здесь мы знакомимся и анализируем каждый механизм OLAP.,Не обязательно на 100% разумно и точно,Просто ссылка. Только люди с реальным онлайн-опытом OLAP,В конкретных бизнес-сценариях и определенных объемах данных,Эксперты, имеющие опыт глубокой оптимизации одного или нескольких механизмов OLAP, представленных выше.,Только тогда мы сможем иметь право говорить и давать предложения по техническому отбору. Но поскольку для этих механизмов OLAP слишком много технических решений,,Ни один специалист не может знать их все. Возьмите меня лично в качестве примера,Прошлый опыт работы позволил мне лучше понять Hive, SparkSQL, FlinkSQL, Presto и Elasticsearch.,Остальные движки не осмеливаются сказать, что понимают это.,Это не является рекомендацией по техническому выбору. Поэтому, вероятно, то, что говорит каждый эксперт, является неточным и неполным.,Мы призываем всех обсуждать и комментировать здесь,Задавайте больше вопросов,Станьте экспертом в различных механизмах OLAP.
Ссылки
https://cloud.tencent.com/developer/article/1797949
https://doris.apache.org/zh-CN/docs/get-starting/quick-start
https://cloud.tencent.com/developer/article/1899164?areaId=106001
https://cloud.tencent.com/developer/article/1506296?areaId=106001