Ответы пользователя по тегу ClickHouse
  • Как лучше сохраняться данные с сайта в ClickHouse?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Схема в общем-то рабочая, но стоит все же предусмотреть некоторые нюансы:
    Создаю сервер с nginx и ClickHouse на Ubunta в одном месте
    Вы уверены, что одна единственная машина, нагруженная одновременно и nginx и CH и redis и php/python справится с Вашей нагрузкой?
    Я бы сразу закладывал, что раньше позже CH уедет на отдельную машину (а то и на 2), redis + php/python будут жить в парах на множестве машин, а nginx будет балансировать нагрузку с отдельной машины.
    раз в N секунд скриптом на python/php через cron кладет данные в ClickHouse

    Тут сразу 2 момента:
    Во-первых, при миллиарде записей CH вполне может пересчитывать индексы пару минут. +1000 записей за 10 инсертов конечно лучше, чем +1000 записей за 1000 инсертов... но все же заметно хуже чем +1000 записей за 1 инсерт.
    Во-вторых, при пиковой нагрузке у Вас может закончится память, и redis уйдет на диск, потеряв всю скорость от inMemory работы. Конечно Вы тут еще и упретесь в количество активных потоков под php и начнете его балансировать. Так что одно из решений будет уже описанное выше, что на каждой машине с php/python свой redis. А там как повезет с нагрузкой.
    Но все же я бы сразу делал выгрузку из redis в CH умнее, чем тупо каждые N секунд выгружаем все что есть. Лучше если будет выгрузка и по времени (при этом реже) и по количеству данных для записи.
    Ну и еще, задумайтесь сразу как делить данные в redis по принадлежности к интервалу записи
    Ответ написан
    Комментировать