Comments 10
сразу отвечу да, попробуйте из kafka апдейтить редис и постгри, сразу всё встанет на свои места
Маятник снова качнулся. Ждем.
Довольно часто и на Хабре появляются такие хорошие комментарии и тогда говорят: «комменты оказались интереснее самого поста». Но без поста не было бы и комментов. Пост — это приглашение к обсуждению.
Я, может быть, слишком поздно ворвался в этот тред, но разве транзакции тут не будут проблемой?
Во-первых, каждый клиент должен каждый раз выполнять этот запрос в новой транзакции.
Во-вторых, если клиентов много и блокировки берутся часто — то из-за MVCC таблица будет раздуваться (bloating).
Открытие-закрытие транзакций с блокировками — недешевая операция, учитывая многопоточность постгреса. У Redis — все в памяти, он однопоточный и операции, например, incr/decr — атомарные.
Как академический пример — очень интересно что можно такое реализовать на SQL. На практике — не надо, пожалуйста. Как и бизнес-логику в базе хранить тоже.
Redis принципиально занимает другую нишу, чем PostgreSQL, и выделяется в том, к чему PostgreSQL не стремится. Примеры включают кэширование данных с TTL, а также хранение и обработку эфемерных данных.
P.S. Возможно этот абзац был добавлен после Вашего комментария, в таком случае, прошу прощения.
С первым сценарием на самом деле постгрес справляется плохо. Если активный поток фоновых задач, то таблица с задачами очень часто обновляется, и на больших нагрузках встаёт всё колом в блокировках. Когда мы переехали в редис с его BLPOP то всё стало просто прекрасно.
А нужен ли Redis или хватит PostgreSQL