Apache Pinot — это распределенное хранилище данных OLAP, работающее в режиме реального времени.
Apache Pinot — это распределенное решение для хранения OLAP-данных в режиме реального времени, разработанное для обеспечения масштабируемой аналитики с низкой задержкой в реальном времени.
Он может получать данные из пакетных источников (таких как HDFS, S3, Azure Data Lake, Google Cloud Storage), а также из потоковых источников (таких как Kafka). Pinot разработан для горизонтального масштабирования, поэтому он может масштабироваться до больших наборов данных и более высокой частоты запросов по мере необходимости.
Об Апаче Пино
Проект Pinot изначально был разработан компанией LinkedIn , а в 2015 году передан фонду Apache для дальнейшей совместной разработки. Система хранения данных предназначена для работы в среде, где постоянно добавляются новые данные, и спроектирована таким образом, чтобы обеспечивать минимальную и предсказуемую задержку, что позволяет использовать её для обработки запросов в режиме реального времени.
Как и большинство других хранилищ данных и решений для OLAP-архитектуры, Pinot поддерживает язык запросов, похожий на SQL , который позволяет выполнять выборку, агрегирование, фильтрацию, группировку, сортировку и другие запросы к данным.
Apache Pinot обеспечивает горизонтальную масштабируемость и средства для достижения отказоустойчивости и живучести при сбоях программного и аппаратного обеспечения. Процессы репликации и резервного копирования интегрированы непосредственно в цикл обработки данных, добавляемых в хранилище данных. С одной стороны, такой подход значительно упрощает архитектуру, но с другой стороны, он вносит задержку между добавлением данных и их доступностью для запросов.
Данные хранятся в таблицах в рамках столбцово-ориентированной базы данных, поддерживаются различные схемы сжатия и возможность размещения нескольких значений в поле. Pinot предоставляет подключаемую систему индексирования, которая может использовать различные технологии индексирования (упорядоченный индекс, битовый индекс, инвертированный индекс, индекс StarTree, фильтр Блума, диапазонный индекс, индекс текстового поиска (Lucence/FST), индекс JSON, геопространственный индекс).
Из характеристик, которыми выделяется Апач Пино:
- Столбец-ориентированный– База данных, ориентированная на столбцы, с различными схемами сжатия, такими как длина серии и фиксированная длина в битах.
- Подключаемая индексация: Подключаемые технологии индексирования, Сортированный индекс, Растровый индекс, Инвертированный индекс.
- Оптимизация запросов- Возможность оптимизировать план запроса/выполнения на основе метаданных запроса и сегмента.
- Прием потоков и пакетов: Прием потоков Hadoop и пакетный прием практически в реальном времени.
- Консультация: Механизм выполнения запросов на основе SQL.
- Upsert во время приема в реальном времени: обновлять данные в масштабе и согласованно
- Несколько полей значений: поддержка полей с несколькими значениями, позволяющая запрашивать поля как значения, разделенные запятыми.
- Облачная нативность в Kubernetes: Helm Chart обеспечивает горизонтально масштабируемое отказоустойчивое кластерное развертывание, которым легко управлять с помощью Kubernetes.
Новая версия Апача Пино
Стоит отметить, что недавно вышла версия 1.0 Apache Pinot , которая, по сути, подводит итог большой работы по стабилизации кодовой базы и учету пожеланий сообщества (было учтено более 300 комментариев).
Кроме того, стоит отметить, что новый многоэтапный механизм запросов полностью раскрыл свой потенциал , обеспечив поддержку слияния таблиц (JOIN). Первоначально используемый механизм отлично справлялся с простыми операциями фильтрации и агрегирования, но для обеспечения предсказуемого времени выполнения запросов он не поддерживал операции объединения таблиц.
Новый механизм включает промежуточные этапы для обработки сложных запросов, а его семантика SQL близка к ANSI SQL . Кроме того, новая версия предлагает встроенную поддержку обработки данных JSON, обеспечивает поддержку значения "NULL", интегрируется с Apache Spark 3.x и улучшает реализацию таблиц в режиме Upsert (добавляя сжатие сегментов и обеспечивая поддержку операций удаления).
Наконец, если вам интересно узнать больше , следует знать, что код проекта написан на Java и распространяется под лицензией Apache. Подробную информацию о новой версии можно найти по следующей ссылке.