Google начал процесс создания ZetaSQL с открытым исходным кодом, внешнего интерфейса SQL, который состоит из парсера и анализатора. Он разработан для работы с множеством серверных компонентов и может составить конкуренцию Apache Calcite в экосистеме JVM.
ZetaSQL — это синтаксический анализатор C ++ SQL, который, помимо прочего, используется внутри Google для стандартного sql BigQuery. Разработчики открыли исходный код интерфейса Java и сейчас работают над адаптером между ZetaSQL и Calcite для Apache Beam. Calcite — это платформа Apache с открытым исходным кодом, состоящая из парсера SQL, API и механизма планирования запросов. Преимущество использования ZetaSQL вместо Calcite для Google состоит в том, что он позволяет использовать один и тот же диалект SQL как в BigQuery, так и в Beam.
Тот факт, что ZetaSQL используется в качестве парсера и анализатора для стандартного диалекта SQL Google BigQuery, делает этот выпуск интересным. ZetaSQL также является парсером ANSI Standard SQL для Spanner и скоро будет использоваться для DataflowSQL. Google BigQuery — это инструмент Google, который позволяет выполнять запросы, похожие на SQL, для очень больших наборов данных. Он разработан для наиболее эффективной работы при использовании для интерактивного анализа очень больших наборов данных, обычно с использованием небольшого количества очень больших таблиц, предназначенных только для добавления. Spanner — это глобально распределенная и синхронно реплицируемая база данных Google. Она используется Google внутри компании для всего: от Gmail, Google Фото, Календаря, Android Market и Ad Words. DataFlow — это служба обработки данных Google для приложений пакетной обработки данных и потоковой передачи данных в реальном времени.
ZetaSQL был создан для работы с множеством серверных частей и использует GRPC для связи с серверами. Его предполагаемое использование — обеспечение согласованного поведения для таких задач, как семантический анализ, разрешение имен, проверка типов и неявное приведение типов. Он имеет такие функции, как приблизительные алгоритмы (HLL и другие) и поддержку JSON. Он также имеет встроенную поддержку для создания protobuf-файлов и написания UDF-файлов на JavaScript.
Разработчики ZetaSQL указывают, что в форме с открытым исходным кодом определенные механизмы запросов могут не реализовывать все функции языка ZetaSQL и могут выдавать ошибки, если определенные функции не поддерживаются.
Предполагается, что кодовая база для ZetaSQL, которая определяет язык (грамматику, типы, модель данных и семантику), а также синтаксический анализатор и анализатор, будет открыта в несколько этапов, начиная с текущей версии синтаксического анализатора и анализатора. . Разработчики говорят, что до тех пор, пока не будет выпущено больше этапов, не будет никаких гарантий стабильности API и никакие предложения не принимаются.