оптимальное решение.. есть словарь, который обновляется из вью постгреса. Но в постгресе данные всегда на текущий момент, если значение больше не актуально, его не будет. А мне нужна историчность- потому что логи, для которых этот словарь, анализируются за некоторый период в прошлом. Как сделать словарь, в котором значения с теми же ключами обновлялись, а если ключа в источнике больше нет, то сохранялись бы старые значения?
если сделать partial update словарь, то не будет удалять строки, до полной перезагрузки словаря (system reload dictionary) https://kb.altinity.com/altinity-kb-dictionaries/partial-updates/ а по хорошему надо делать ETL и копировать данные в таблицу в КХ и словарь направлять на эту таблицу
С регулярным полным обнулением таблицы или при настройке словаря появилась возможность group by указывать?
Если словарь натравливать на таблицу в кх, то она же булет иметь дубликаты при докидывании обновлений.
и откуда дубликаты?
Кажись понял. Отбираются записи старше сохраненной даты, обновляются в словаре по ключу. В таблице по ключу дубликаты, но словарь последние значения хранит.
1 в таблице (она ведь будет маленькая) можно сделать replacingMergeT и всегда делать optimize после заливки 2 можно сделать вообще таблицу RockDB и там не будет дубликатов 3 и да в словарях можно писать теперь произвольный SQL запрос
Копировать данные в таблицу я думала, а что выбрать тогда в качестве движка таблицы и способа для регулярного копирования? Почему-то кажется, что эрфлоу для считывания новых данных из базы и и обычные движки с версией это чересчур.
https://t.me/clickhouse_ru/235757 я не знаю что такое эрфлоу
Спасибо, посмотрю rockdb
Обсуждают сегодня