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