ближайшие планы переводить в кликхаус (ну т.е. за него почти не шарю , читаю доку и прочее пару дней). В этих логах есть user_id.
Так же надвигается фича, что нужно организовать чтение этих логов, по юзерам за прошедщий месяц, т.е. запрос по user_id выдает лог посещений. rps ~ 600 должен организовать тестовый клиент, т.е. в теории это цифра будет еще больше при некольких клиентах. Плюс читается примерно там же где и пишется, не 1 в 1 но все же. Т.е. Лог посещения записался, не следующих страницах он уже должен максимально скоро влиять на результат чтения.
Думал мб закинуть в materilized view с сортировокой по user_id, зашел в чат по кликхаусу - там как раз недавнее обсуждение что 100 rps уже много. Ну тип кликхаус не для этого, что в принципе логично делать такие выборки сложовато да еще с большой rps.
Приходит логичный вариант key-value кэш, но так как записи не намного меньше чтения, то кэширование как то смотрится малым помошником. Тогда может и не использовать кэширование над первичными логами, а писать в доп базу сразу паралельно ? Но это чтение + анализ коллекции + апдейт.
Может есть какое то решение в базах данных, где есть key (user_id)=>valueCollection с ttl или со стеком из коробки? Ну или лучше самому такой организовывать на записи? Или вообще думаю не в правильном направлении?
600 RPC похер же, лишь бы работало. Всегда можно воткнуть Кафки всякие что бы не упираться в запись и батчить вещи в памяти
Не совсем понял. У меня проблема с чтением. Запись логов не проблема в тот же клмкхаус, проблема как потом быстро читать.
Чтение легко масштабировать репликами + тот же кликхаус не должен проблем создавать
Ну для него же это поиск по условию. Про реплики думал, но чёт подумал что это скорее костыль причём сложный. Чтобы он был фронтовой частью.
Ну то что много реплик нужно будет, чтобы большой qps поддерживать, если говорить что 100 уже много для 1
Вьюхи создавай, кликхаус умеет агрегировать фоном для почти моментальных выборок.
Обсуждают сегодня