Автор: Джон Реслер (@vvcephei) | Целевая версия: 0.23.1; 7.1.0 | Статус: объединён | Обсуждение: ссылка на PR с обсуждением дизайна
Краткое содержание: Пользователи должны иметь возможность выполнять pull-запросы (специальные, самозавершающиеся) к потокам, так же как и к таблицам.
ksqlDB позволяет создавать как pull-запросы (которые выполняются по запросу и работают до завершения, как типичные запросы к базе данных), так и push-запросы (долго выполняющиеся подписки, которые возвращают результаты непрерывно по мере поступления новых входных данных).
В ksqlDB также есть двойная модель данных «таблица/поток». Можно выполнять push-запросы для таблиц и потоков, а также pull-запросы для таблиц, но в настоящее время нельзя выполнять pull-запросы для потоков.
Ранее мы считали ненужным реализовывать pull-запросы для потоков, поскольку для потока «текущее состояние» эквивалентно всей истории записей. Другими словами, pull-запрос к потоку вернёт то же самое, что и push-запрос, если он настроен на начало потока и отменён после достижения конца.
На практике, однако, неясно, когда вы достигли конца потока, поэтому сложно определить, когда следует отменить запрос. Кроме того, неудобно каждый раз настраивать push-запросы на начало потока при необходимости выполнения одного из этих запросов типа pull.
После реализации этой функции вы сможете легче отлаживать потоки данных, например, проверяя наличие определённой записи в потоке. Вы также сможете интерпретировать таблицу как поток и искать определённые события в её истории. Возможность сканирования темы и применения сложной логики фильтрации также откроет новые варианты использования, такие как поиск определённых событий.
Новый синтаксис не добавляется. Единственное изменение заключается в том, что запросы к объектам потока больше не должны заканчиваться на «EMIT CHANGES».
Чтобы поддержать полную выразительность запросов ksqlDB, текущий дизайн состоит в том, чтобы просто рассматривать pull-запросы к потокам как синтаксический сахар. Внутренне мы будем:
Мы обновим существующие тесты, которые проверяют ошибку при попытке выполнить pull-запрос для потока. Логика будет обновлена, чтобы ожидать действительный ответ. Мы также добавим новые модульные и интеграционные тесты, чтобы гарантировать, что запрос выдаёт желаемый результат. ## Обновления документации
Поскольку это всего лишь снятие ограничения, проблем с совместимостью не ожидается.
Это всего лишь добавление более удобного способа выполнения запросов к данным, которые уже доступны для запросов, поэтому существующих механизмов контроля доступа достаточно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )