В общем, вводим концэпцию полурешающих таймлайнов. Связность: https://mokum.ru/squadette/39365 Полурешающие таймлайны это приватные решающие плюс один глобальный таймлайн "публичные посты". Табличка выглядит как [semidecisive_id, timeline_id, created_at, fresh_at]. Каждый пост имеет в этой табличке N*M строчек, где N это кол-во полурешающих таймлайнов, M - кол-во всех таймлайнов. Почти для всех постов N=1, редко 2, совсем редко 3. #mokum-dev
а какую проблему это решает? ‎- right wing hug squads
Запрос на генерацию ленты выглядит как Select * from semidecisive where sd_id in (<ids1>) and tl_id in (<ids2>) order by fresh_at desc limit 20. ‎- псы в рапиде
@screamager: не решает никакую, но там есть идея, которую можно попробовать подумать. ‎- псы в рапиде
а, я понял, то есть это так, размышления в сторону. я-то подумал что это Инженерное Решение ‎- right wing hug squads
Список ids1 - это список приватных пользователей на которых подписан юзер + один айдишник публичного полурешающего таймлайна. Список ids2 - это список таймлайнов, из которых конструируется лента. ‎- псы в рапиде
Не секрет, что приватных пользователей около 10%. Типичный пользователь подписан на 200 человек (то есть на 600 таймлайнов). ‎- псы в рапиде
Это означает, что список ids1 состоит примерно из 21 элемента, а список ids2 состоит из 600 элементов для морды или от одного до пяти для практически всех остальных страниц. Я совершенно не понимаю, какой будет план выполнения для этого запроса, и имеет ли он смысл при таком плане. ‎- псы в рапиде
При переходе пользователей через границу видимости придется обновлять количество записей, пропорциональное кол-ву его постов, это может оказаться довольно тяжело. ‎- псы в рапиде
Предположим, что у пользователя 1000 постов. Среднее кол-во таймлайнов равно 11. Соответственно, при переходе через границу видимости надо обновить 10k записей. ‎- псы в рапиде
@screamager: ну эта схема интересна тем, что позволяет решить проблему доступа на чистом SQL. ‎- псы в рапиде
Понял кстати что можно завести спец-таймлайн (это уже в Мокуме), который называется user_all, на него нужно класть посты юзера, а также посты с лайками юзера или комментами юзера. Тогда генерация морды будет требовать примерно в три раза меньше айдишников, что может повлиять на перформанс. ‎- псы в рапиде