целом.
Есть MV, которая разбирает данные в формате JSONAsString. В структуру этого json добавляют новое поле, соответственно, надо поменять MV. Но в DDL для MV отсутствует конструкция OR REPLACE.
Можно только так:
DROP TABLE my_mv;
CREATE MATERIALIZED VIEW my_mv
...
Как правильно поменять MV под новую структуру без потери данных?
https://clickhouse.com/docs/en/sql-reference/statements/alter/view
и данные из таблицы с кафка-движком при этом не будут потеряны на время этого действия?
тут вот не могу сказать 100 точно https://kb.altinity.com/altinity-kb-integrations/altinity-kb-kafka/altinity-kb-kafka-main-parsing-loop/ кафка никакого INSERT не делает, она читает топик и формируется INSERT блок в MV уже... и я не помню ошибки в MV они не дают librdkafka consumer читать топик, или чтение топика продолжается... если не дают, тогда все ок, старые сообщения пойдут по старому формату, новые по новому но вообще вам бы больше подошел подход чтения исходной строки как строка и набора полей которые через DEFAULT JSONExtract задаются...
DROP TABLE my_mv; CREATE MATERIALIZED VIEW my_mv тоже не теряет данные если MV только одно. когда вы дропаете MV консьюм из кафки прекращается
самый безопасный способ DETACH kafka_table 2. ... any modifications of derived MV (CREATE may not work, because kafka table is detached, but ATTACH MATERIALIZED VIEW will) 3. ATTACH kafka_table
Обсуждают сегодня