1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-KSQL

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
klip-4-custom-types.md 6.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 07:33 e6dfb69

KLIP-4: Реестр пользовательских типов

Автор: agavra | Целевая версия: 5.4 | Статус: объединено | Обсуждение: https://github.com/confluentinc/ksql/pull/2894

Краткое содержание: Внедрение функции, которая упрощает работу с пользовательскими типами в KSQL путём создания псевдонимов для сложных объявлений типов.

Мотивация и предпосылки

В Kafka часто встречаются очень сложные вложенные структуры данных, и схемы могут быть вложены в другие схемы. Желательно иметь возможность определить эту пользовательскую схему в KSQL один раз и ссылаться на неё во всех будущих утверждениях. Например, представьте следующие объявления схем:

CREATE TYPE ADDRESS AS STRUCT<number INTEGER, street VARCHAR, city VARCHAR>;
CREATE TYPE PERSON AS STRUCT<firstname VARCHAR, lastname VARCHAR, address ADDRESS>;
CREATE TYPE COMPANY AS STRUCT<name VARCHAR, headquarters ADDRESS>;

С помощью этой функции организации могут использовать существующие схемы в своих запросах KSQL и обмениваться данными с другими подразделениями своей организации.

Объём работ

  • Синтаксис для регистрации и отмены регистрации псевдонимов пользовательских типов.
  • Возможность включения пользовательских типов во время компиляции (например, в JAR) для использования в объявлениях UDF.
  • Возможность перечисления всех пользовательских типов.

Интеграция со Schema Registry не рассматривается в рамках этого объёма работ.

Результат

Реальные данные сложны, вложенны и референтны. Эта функция значительно улучшит взаимодействие пользователей со сложными схемами.

Публичные API

CREATE TYPE

CREATE TYPE <type_name> AS <type>;

Синтаксис CREATE TYPE позволит пользователям KSQL регистрировать псевдоним типа непосредственно в SQL (в интерактивном или безголовом режимах). Любые типы, зарегистрированные с помощью этой команды, можно использовать в любом будущем утверждении.

Попытки зарегистрировать один и тот же тип дважды без соответствующего DROP TYPE завершатся неудачно.

DROP TYPE

DROP TYPE <type_name>;

Синтаксис DROP TYPE позволит пользователям KSQL удалять псевдоним типа из KSQL.

SHOW TYPES

SHOW TYPES;

Команда SHOW TYPES выведет список всех пользовательских типов и их определений. Пример вывода для этой команды будет выглядеть следующим образом:

|---------------|--------------------------------------------------------------|------------------|
|     name      |       definition                                             | source           |
|---------------|--------------------------------------------------------------|------------------|
| ADDRESS       | STRUCT<number INTEGER, street VARCHAR, city VARCHAR>         | types.sql        |
| PERSON        | STRUCT<firstname VARCHAR, lastname VARCHAR, address ADDRESS> | types.sql        |
| COMPANY       | STRUCT<name VARCHAR, headquarters ADDRESS>                   | CLI              |
|---------------|--------------------------------------------------------------|------------------|

Extension Directory

ksql.extension.dir теперь также распознаёт файлы .sql, содержащие только команды CREATE TYPE. Эти команды будут выполняться перед компиляцией любых UDF, поэтому эти объявления пользовательских типов можно использовать в аннотациях @Udf. Они будут загружаться в естественном порядке, чтобы гарантировать детерминированное поведение загрузки (используя Comparator#naturalOrder и String#CompareTo).

Дизайн

Будет фаза переписчика, которая заменит любой псевдонимный тип полной схемой. Для UDF аннотация будет искать схему напрямую и компилировать UDF с использованием полной схемы. Нет ограничений на то, какие типы можно добавлять в качестве пользовательских, и пользовательские типы могут быть составными.

Это переписывание будет выполнено до постановки команды в очередь на тему команд, чтобы убедиться, что если типы изменятся, существующие утверждения уже будут разрешены. Пользователь увидит сообщение об успешном выполнении, содержащее переписанную схему.

Если тип уже зарегистрирован через CLI, но затем добавляется в каталог расширений, значение в каталоге будет иметь приоритет над значением, зарегистрированным через CLI. CLI будет отклонять вызовы для регистрации типов, которые уже зарегистрированы в каталоге расширений.

Будущая работа

  • В версии v1 команды DESCRIBE/Explian будут показывать...

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-KSQL.git
git@api.gitlife.ru:oschina-mirror/mirrors-KSQL.git
oschina-mirror
mirrors-KSQL
mirrors-KSQL
master