Size: a a a

Clojure — русскоговорящее сообщество

2020 June 29

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Хоть немного настроенная и проиндексированная база прожуёт не заметив
источник

Н

Никита in Clojure — русскоговорящее сообщество
И дёрнуть с базы 1000 рекордов это не быстро
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Тогда положите кэш и по лайку обновляйте ключи
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Но нужно будет при рестарте кэш заполнять
источник

AZ

Alex Zveryansky in Clojure — русскоговорящее сообщество
Никита
тысячи постов на регион. В каких то постах лайков вовсе нет, в каких то тысячи
сделайте кеш на post-id : count-likes. сходил в одну базу за нужными post-id и в другую за статой. кеш передергивать по мере бизнес-надобности
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Опять, как всегда — нужен баланс. Сложнее система — сложнее поддержка. Если пытаться всё сделать на микросервисах и SPA, то бог в помощь.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Иногда достаточно просто сходить в базу
источник

MN

Maksim N in Clojure — русскоговорящее сообщество
GROUP_CONCAT поможет в таких ситуациях? Что если сделать такой запрос из бд с лайками?
источник

MN

Maksim N in Clojure — русскоговорящее сообщество
Group concat или в постгрессе array_agg
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
Иногда достаточно просто сходить в базу
Посмотреть на время выполнения, попробовать оптимизировать. И только если реально упёрлось в базу, начинать обмазывать кэшем внутри функции, которая данные достаёт. Чтобы клиент не видел внутренних деталей.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Никто, впрочем, не мешает и сразу обмазываться кэшем, достаточно просто использовать что-то вроде memoize, чтобы по аргументам строился ключ кэша.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
Опять, как всегда — нужен баланс. Сложнее система — сложнее поддержка. Если пытаться всё сделать на микросервисах и SPA, то бог в помощь.
Т.е. more code — more problems. Лучше всего поддерживается код, которого нет.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Можно денормализовать базу, положить каунтер лайков в посты.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Вариантов можно много придумать.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Никита
У меня вопрос в конкретике
Я объясню, что нужно для конкретики: описать схему данных, например в виде запросов на создание таблиц; описать где какие данные лежат; описать, кто эти данные меняет; описать какие-то требования к системе и так далее. Каждое новое требование может изменить решение.
источник

Н

Никита in Clojure — русскоговорящее сообщество
Alex Zveryansky
сделайте кеш на post-id : count-likes. сходил в одну базу за нужными post-id и в другую за статой. кеш передергивать по мере бизнес-надобности
Так нужный пост определяется количеством лайков
источник

Н

Никита in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
Можно денормализовать базу, положить каунтер лайков в посты.
Сейчас так и думаю сделать. Единственный момент как часто обновлять каунтер. На каждый лайк, каждые n минут либо еще каким-то способом. Нет бизнес требования показывать точное число каждый раз
источник

Д

Диёр in Clojure — русскоговорящее сообщество
Никита
Такая задача: люди делают посты в каком-то районе города. На пост можно реагировать лайком. Нужно выводить топ постов по любому району, а также чтобы была возможность брать топ по всему городу. И конечно же это относится к любому району любого города. Лайки и посты находятся в разных базах, то есть сделать простой подзапрос сделать не выйдет. Как бы вы ее решали?
Что за базы? В постгре можно кроссбазовый селект сделать
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Я выше там написал, что нужно понимать требования, чтобы предложить какое-либо конкретное решение. В данном случае мне кажется, что можно при лайке писать в две базы, в одну данные по лайку, во вторую инкремент лайков к посту. Да, начинаются интересные пляски при ошибках, но если точность не важна, то опять появляются разные варианты.
источник

Н

Никита in Clojure — русскоговорящее сообщество
Окей, я посмотрю эти варианты, спасибо за советы)
источник