Перейти к содержимому
5 / 15

Как спроектировать ленту новостей?

Весь кейс сводится к одному выбору: разложить пост по лентам подписчиков при записи (fan-out on write) или собирать ленту из постов авторов при чтении (fan-out on read). Запись дороже в первом варианте, чтение — во втором, поэтому для обычного продукта, где читают в десятки раз чаще, чем пишут, берут fan-out on write и хранят готовую ленту как сортированное множество идентификаторов. Ломается это на аккаунтах с миллионами подписчиков: один пост порождает миллионы вставок. Отсюда гибрид — обычных авторов раскладывают при записи, «знаменитостей» подмешивают при чтении. Пагинация только курсорная: при offset лента разъезжается от новых вставок. Свежесть здесь — согласованный компромисс: задержка в десятки секунд обычно допустима.

Как спроектировать ленту новостей? | JScriptiser