Apache CalciteЭто платформа динамического управления данными с открытым исходным кодом.,Обеспечивает стандарт SQL Язык, оптимизация запросов и возможность подключения к различным источникам данных, но не к хранилищам данных, алгоритмам обработки данных и репозиториям для хранения метаданных.
Первоначальное название Calcite было optiq. Первоначально оно использовалось в проекте Hive для оптимизации затрат CBO для Hive. В мае 2014 года optiq стал независимым и стал инкубационным проектом сообщества Apache. В сентябре 2014 года он был переименован в Calcite. В октябре 2015 года он официально завершил работу и стал проектом высшего уровня.
Calcite из Цельда"One planner fits all",Ожидается, что он предоставит единый оптимизатор запросов для различных вычислительных платформ и источников данных.。как генералSQLслой обработки,Calcite Широко используется многочисленными компонентами и компаниями с открытым исходным кодом. По сравнению с другим промежуточным программным обеспечением SQL с открытым исходным кодом GPORCA (Greenplum Extended Optimizer), Calcite имеет более богатые и зрелые функции, и сообщество все еще активно его обновляет.
Calciteизобщая архитектураКак показано ниже,в,Самый основной компонент — оптимизатор запросов (Query Optimizer).,Отвечает за реализацию преобразования и оптимизацию дерева планов SQL.,Возможности оптимизатора по оптимизации SQL напрямую связаны с эффективностью выполнения.,Это фокус и сложность уровня обработки SQL. Оптимизатор запросов Calcite в основном опирается на следующие три компонента:
Для реализации полного процесса обработки SQL Calcite также включает в себя сервер JDBC, анализатор и валидатор SQL, а также построитель выражений. Calcite в основном предоставляет два внешних метода вызова: 1. На основе вызова JDBC. 2. Непосредственно на основе вызова API Java;
Calcite предоставляет внешнему миру множество API и SPI, в основном включая следующие шесть модулей:
В дополнение к уровню обработки SQL в качестве механизма вычислений,CalciteДостаточно хорошоПредоставлять расширенные возможности обработки для других промежуточных уровней представления SQL (уровней IR).。на основеCalciteРасширятьизобщийSQL Компоненты ИК-слоя имеют Linkedin Coral и Substrait。
LinkedIn Coral:даLinkedinОткрытый исходный кодизSQLКонвертировать、анализировать、Переопределить компонент,Обеспечивает функцию преобразования диалекта SQL нескольких типов.。Coral Существует два способа определения IR-слоя: (1). На основе абстрактного синтаксического дерева AST (2). По логическому плану.
Ядро Coral расширяет функции оптимизации SQL и преобразования диалектов на основе Calcite.,На следующем рисунке показано взаимодействие между двумя компонентами.,в Синий указываетCalciteмодуль:
Substrait:на основеProto PlanОпределение межъязыковой реляционной алгебрыизпротокол сериализации,основнойдаСпецификации, определяющие деревья планов SQL,Позволяет преобразовывать и оптимизировать эти деревья планов между различными механизмами выполнения.,Решите проблему плохой совместимости между различными движками.
Substrait-javaдапротивSubstraitизJavaПодпроект,Удобно дляJavaОперация в приложенииSubstraitизплан дерева。Substrait-java На основе Calcite завершено преобразование SQL в реляционную алгебру RelNode. На следующем рисунке показаны интерактивные отношения между двумя компонентами, на которых синий цвет представляет модуль Calcite.