KLIP 49 — Добавление семантики исходного потока/таблицы
Автор: Boyang Chen (@boyang) | Целевая версия выпуска: 0.22.0; 7.1.0 | Статус: объединено | Обсуждение: https://github.com/confluentinc/ksql/pull/7474
Краткое описание: Добавить поддержку исходного потока/таблицы. Это даст пользователям возможность просматривать данные только для чтения, которые заполняются вышестоящей темой Kafka, делая владение данными более понятным.
У пользователей KsqlDB нет чёткого определения владения таблицами или потоками, которые они создали. В «обычной» базе данных, когда пользователь создаёт таблицу, БД создаёт соответствующие файлы на диске и владеет таблицей. Пользователь может записывать данные в эти таблицы с помощью инструкций INSERT INTO и/или изменять/удалять существующие данные с помощью команд UPDATE и DELETE. Однако таблица не будет изменена никакими другими способами.
Для ksqlDB настройка выглядит совсем по-другому. В частности, пользователь может создать таблицу на основе тем, хранящихся в Kafka, как источника истины. Однако, поскольку нет чёткого владения, определённая таблица может быть изменена с помощью команды INSERT для заполнения её данными. Вставка загрязнит исходный источник данных, который должен принадлежать вышестоящему, например, конвейеру CDC, который заполняет тему.
Во-вторых, при вызове CREATE TABLE фактические данные не материализуются и не готовы к запросам на извлечение. Чтобы устранить эти пробелы, мы хотели бы добавить:
Error: insertion into source stream/table is not allowed
Сначала мы добавим необязательное ключевое слово SOURCE в кодовую базу KSQL, добавив новый синтаксис в sqlBase.g4 для:
Пример синтаксиса:
CREATE (OR REPLACE)? (SOURCE)? TABLE (IF NOT EXISTS)?...
При выполнении вставок KSQL проверит, доступен ли данный поток/таблица только для чтения. Если да, то вставка будет отклонена.
Кроме того, при вызове команды DROP для исходного потока/таблицы в настоящее время пользователь может выполнить DROP STREAM/TABLE [table_name] DELETE TOPIC, чтобы очистить базовую тему, поддерживаемую потоком/таблицей. Это не должно быть разрешено для исходного потока/таблицы, поскольку объект не владеет входными данными. См. эту проблему для получения дополнительной информации.
Основное различие между исходной таблицей и материализованным состоянием в запросе CTAS заключается в том, что мы не заполняем тему приёмника для исходной таблицы, поскольку не ожидается подключения к нисходящему каналу. Это будет учтено при... Время будет потрачено следующим образом (на реализацию и проверку):
Будет 3 контрольных точки: первая — завершение добавления синтаксиса (#1), что отмечает начало разделения работы между инженерами. Вторая контрольная точка будет означать полную реализацию функционала (#2–6), а третья — завершение документации и тестов.
docs/developer-guide/ksqldb-reference/source-table.md
.docs/developer-guide/ksqldb-reference/source-stream.md
.Это новая функция в CT и CS, которая не имеет проблем обратной совместимости. В дальнейшем мы должны оставить запрос к исходной таблице открытым для развития вокруг её формата данных, поэтому мы упомянули добавление темы журнала изменений вместо того, чтобы полагаться на тему ввода для резервного копирования. На этапе реализации мы также добавим материализацию исходной таблицы как новый этап выполнения с поддержкой управления версиями, чтобы мы могли плавно обрабатывать обновления без необходимости записывать несовместимый формат данных в старые состояния.
Это не функция безопасности, и разрешено CREATE SOURCE TABLE
поверх существующей темы, которую используют другие таблицы, без какого-либо влияния на право собственности. В долгосрочной перспективе у нас будет полная модель RBAC для KSQL, логистическая для создания нескольких таблиц по одной теме с разными ролями пользователей. Администратор может создать таблицу с доступом на запись, в то время как роль потребителя должна быть разрешена только создавать таблицы только для чтения.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )