Presto — это высокопроизводительный распределённый SQL-движок с открытым исходным кодом, разработанный для выполнения интерактивных аналитических запросов над большими объёмами данных. Он предназначен для работы в средах, где данные хранятся в различных источниках, включая распределённые файловые системы, объектные хранилища и реляционные базы данных, и обеспечивает возможность объединять эти источники через единый SQL-интерфейс без предварительной загрузки данных в одно хранилище.
Архитектурно Presto разделён на координатор и набор воркеров: координатор планирует и координирует выполнение запросов, а воркеры выполняют распределённые стадии обработки. Движок поддерживает стандартный SQL (включая агрегирование, оконные функции и соединения), оптимизации планов выполнения, параллельную обработку и масштабирование по горизонтали. Благодаря плагинной модели коннекторов Presto может подключаться к разнообразным источникам данных и выполнять федеративные запросы, которые объединяют данные из нескольких систем в одном запросе.
- Назначение: интерактивный анализ больших объёмов данных и федеративное выполнение SQL-запросов к разнородным источникам.
- Архитектура: координатор и распределённые воркеры с планированием заданий и параллельным исполнением.
- Поддержка SQL: широкий набор SQL-возможностей, включая агрегатные и оконные функции, фильтрацию, сортировку и соединения.
- Федерация данных: подключаемые коннекторы для доступа к файловым системам, объектным хранилищам, реляционным базам данных и системам обработки потоков.
- Расширяемость: модульная система коннекторов и плагинов для интеграции с экосистемой данных.
- Производительность: оптимизации выполнения, планирование запросов и распределённая обработка для снижения времени отклика на сложные аналитические запросы.
- Устойчивость и масштабирование: способность масштабироваться горизонтально путём добавления воркеров и обработки больших наборов данных в кластере.
- Совместимость: интеграция с существующими хранилищами данных и инструментами аналитики без необходимости перемещения данных.
- Открытый исходный код: проект распространяется под лицензией с открытым исходным кодом, что позволяет сообществу развивать коннекторы и улучшать функциональность.