mongo в clickhouse?
Столкнулся с проблемой. Есть огромнейшая база с записями такого вида:
id(objectID), event_name(string), params(Object)
Проблема в этом адском params, в котором может храниться любая структура данных. Как быть в таком случае?
Сначала пробовал хранить этот params как json, и затем использовать встроенные функции visitParamExtract. Но проблема в том, что на больших данных, это работает медленно, т.е. по сути происходит фуллскан всех этих json данных как я понял, и запрос отрабатывает неприлично долго.
Затем я извратился, и собрал все уникальные параметры, и сделал ALTER, добавив каждый параметр, как отдельный столбец. Запрос стал отрабатывать очень быстро. Но теперь вопрос, как быть, когда в этом params появится в какой-то момент новый уникальный параметр? ALTER с добавлением столбца не тяжелая операция, если верить мануалам и собственным тестам. Но правильный ли это путь, господа?
Если их не слишком много будет в итоге то норм
Можно использовать гибридный подход — всегда иметь оригинальный params и добавлять только те (вычислимые) колонки, по которым нужно уметь быстро отдавать ответ, или по которым часто идет поиск. Скорее всего количество таких колонок уже не будет порядка тысячи (лучше все-таки больше пары сотен колонок в ClickHouse не иметь, поскольку каждая вставка создает по паре файлов на каждую колонку), и вы получаете все преимущества по скорости в ClickHouse, не теряя возможности фильтровать по любой колонке, если возникает необходимость.
Обсуждают сегодня