Обновить

Комментарии 8

Интересный кейс. В свое время активно юзали CH в качестве Data Lake read-only хранилища и это было искренне долго. "Дизайн" данных начинался уже на уровне SQL базы, чтобы наверняка потом все корректно залить в CH...

Было бы полезно добавить в статью:
– оценку объёмов данных и нагрузки
– требования к ресурсам ClickHouse
– сравнение с альтернативами (partitioning в MySQL/PostgreSQL, replica, materialized views)
– оценку стоимости сопровождения двух БД временную или эмоциональную :)

Тогда было бы понятнее, в каких масштабах архитектура действительно оправдана, а в каких — избыточна.

Учту и постараюсь добавить в ближайшее время, спасибо за комментарий!

удалять старые данные нельзя

Это позволяет быстро удалять старые данные

Ну вот каким местом надо было думать, чтобы с такими исходными делать реализацию с такими свойствами? А если изначально даже не решение, а само техзадание противоречит поставленной задаче, то о чём вообще речь...

И где же оно противоречит? Вы докапались просто до нюанса в описании того, для чего может пригодиться партишен.
И давайте пожалуйста конструктивную критику, если вам не понравилась моя реализация (а я в начале статьи сказала, что она не самая оптимальная), то предложите свою. Лучше делиться опытом, чем негативом

И где же оно противоречит? Вы докапались просто до нюанса в описании того, для чего может пригодиться партишен.

Что-то я как-то не понимаю причин для столь мощной обиды.

Всё, что написано, основывается исключительно на ваших же словах. Вы ставите одну задачу, а решаете совсем другую. Нет бы написали что-то вроде "если же когда-то требование о не-удалении старых данных будет снято, то данное решение позволит быстро удалять устаревшие данные" - ну да, дополнительная возможность в решении... но вы-то пишете так, как будто такое удаление является обязательным для решаемой задачи, и соответственно возникает предположение, что вы не рассматриваете и изначально отбрасываете решения, которые не позволяют удалять старые данные быстро.

По большому счёту, ваше партиционирование ну никакой иной задачи не решает, во всяком случае вы ничего подобного не описываете. Представьте, что исходные о запрете удаления - абсолютны. Зачем тогда партиционирование? Оно нужно для чего-то ещё? опишите. Более ни для чего? ну так укажите, что оно опционально. Тогда всё будет ровно и без противоречий.

  • Удаляем ошибочные записи из ClickHouse

  • Исправляем в MySQL (если там еще есть)

Удаляем, потом смотрим. Что может пойти не так?)

Тут вы правы, мой косяк)

Clickhouse..данные физически разбиваются на папки по месяцам. Это позволяет быстро удалять старые данные (просто удалить папку)

Одна папка -это один парт данных, а партиция может состоять из нескольких папок. Не надо ничего удалять на диске, надо настроить TTL или использовать Alter table ..Drop Partition

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации