KLIP 28 — Введение CREATE OR REPLACE
Автор: agavra | Целевая версия выпуска: 0.12.0; 6.1.0 | Статус: объединён | Обсуждение: https://github.com/confluentinc/ksql/pull/5611
Краткое содержание: CREATE OR REPLACE — это механизм, предназначенный для обеспечения эволюции запросов ksqlDB на месте.
Производственные развёртывания баз данных никогда не бывают статичными; они развиваются по мере изменения требований приложений и бизнеса. С этой целью все популярные хранилища данных имеют способы управления и манипулирования существующими данными. Для приложений потоковой обработки пользователь может захотеть изменить своё приложение в результате:
На момент написания статьи ksqlDB предоставляет грубый механизм для изменения поведения своего приложения: удаление запроса и его перезапуск с самого раннего или последнего смещения. Хотя это часто хорошо работает в средах разработки, существуют ограничения его применимости в производстве:
Kafka Streams предоставляет более детальные механизмы (например, перезапуск запросов с различным поведением, но идентичными группами потребителей), но эти методы обременяют пользователей дополнительной сложностью и отсутствием направляющих принципов.
Чтобы лучше понять область применения этого KLIP и любых будущих улучшений, мы определяем таксономию обновлений запросов как любую комбинацию трёх типов характеристик: исходного запроса, обновления и (необязательно) среды.
Категория | Характеристика | Описание |
---|---|---|
Запрос | Состоятельный | Состоятельные запросы поддерживают локальное хранилище |
Оконный | Оконные запросы поддерживают ограниченное количество состояний, определяемое окном во времени | |
Объединённый | Объединённые запросы считывают данные из нескольких источников | |
Многоэтапный | Многоэтапные запросы содержат промежуточные, невидимые для пользователя темы в Kafka | |
Недетерминированный | Недетерминированные запросы могут давать разные результаты при выполнении идентичного ввода | |
Простой | Запросы без вышеперечисленных характеристик | |
Обновление | Прозрачное | Прозрачные обновления изменяют способ вычисления чего-либо (например, улучшение производительности UDF) |
Выбор данных | Обновления, выбирающие данные, изменяют, какие/сколько событий генерируется | |
Эволюция схемы | Обновления, эволюционирующие схему, изменяют тип выходных данных | |
Модификация источника | Эти обновления изменяют исходные данные, будь то путём модификации JOIN или замены источника | |
Топология | Эти обновления невидимы для пользователя, но изменяют топологию, например, количество подтопологий или порядок операций (например, фильтрация вниз) | |
Масштабирование | Обновления масштабирования изменяют физические свойства запроса, чтобы обеспечить лучшие характеристики производительности | |
Неподдерживаемое | Неподдерживаемые обновления семантически изменяют запрос недопустимым образом. Миграции такого рода не планируются к реализации | |
Среда | Заполнение | Заполнение требует, чтобы выходные данные были точными не только с точки во времени, но и с самого начала сохранённой истории |
Каскадное | Каскадные среды содержат запросы, которые не являются терминальными, а скорее поступают в последующие задачи потоковой обработки | |
Ровно один раз | Среды ровно один раз не допускают дублирования данных или пропущенных событий | |
Упорядоченное | Упорядоченные среды требуют, чтобы одно смещение разграничивало до и после миграции (события не чередуются) | |
Живое | Живые среды описывают запросы, которые не могут позволить себе простои, будь то посредством... |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )