Войти Регистрация
Data base

162. Две свежие записи ленты на каждого из трёх пользователей

Средняя

Apache Cassandra · Cassandra 5.0.9

Instagram держит в Cassandra ленту фото, Direct и данные антифрода. После перехода на свой движок Rocksandra p99 чтения в одном из кластеров упал с 60 до 20 мс. Схему ниже мы придумали сами, она похожа на типичную таблицу ленты.

Таблица feed_by_user: партиция — user_id, строки внутри отсортированы по posted_at и post_id по убыванию.

Сервис превью уведомлений раз в минуту просит по две самые свежие записи для пачки пользователей. В пачке три человека: 11, 12, 13. Нужны user_id, post_id, author. Порядок строк в ответе не важен.

В работе: Пакетное чтение нескольких партиций: превью уведомлений, виджеты «что нового у друзей».

Как проверяем Движка Apache Cassandra в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
PER PARTITION LIMITIN по ключу партицииLIMIT

Источник: Instagram Engineering: Rocksandra и задержки Cassandra, 2018. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какой запрос вернёт не больше двух свежих записей на каждого из пользователей 11, 12 и 13?

  • PER PARTITION LIMIT 2
  • LIMIT 6 — три пользователя по две записи
  • LIMIT 2
  • GROUP BY user_id