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

170. Заказы продавца: вторичный индекс или вторая таблица

Средняя

Apache Cassandra · Apache Cassandra 5.0

Заказы хранятся в Cassandra по покупателю: ключ партиции customer_id. 24 узла, 1,5 млрд заказов, у продавцов от 3 до 40 тыс. заказов в день.

Кабинету продавца нужен список его заказов за выбранный день, около 300 запросов в секунду. Команда предлагает создать вторичный индекс на seller_id.

В работе: Второй путь доступа к тем же данным: заказы по покупателю и по продавцу.

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

Источник: на данных маркетплейса: заказы покупателей и кабинет продавца. Условие пересказано своими словами.

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

Как отдавать заказы продавца за день?

  • Таблица orders_by_seller с PRIMARY KEY ((seller_id, day), created_at, order_id), запись в обе таблицы через logged batch
  • CREATE INDEX ON orders_by_customer (seller_id)
  • Материализованное представление по seller_id без дня
  • SELECT … WHERE seller_id = ? ALLOW FILTERING