Моя цель - создать ленту новостей для каждого пользователя в зависимости от его интересов, используя apache cassandra, я успешно смог это сделать, но я не знаю, как он будет работать, когда сервер находится под нагрузкой и заполнен запросами. Вот что я сделал для достижения своей цели:
Вот как выглядит таблица:
id | content| contentid| date | poster| posterusername | viewer
89102|sometext| 1585 | *timestamp*| 5332 | thatcher | 7480
//id is the primary key
//content is the text posted
//contentid is the id of the post that uniquely identifies it
//date is the timestamp of the time it was posted at
//poster is the users userId
//posterusername is the users username
//viewer is the one of the posters followers
пользователь создает сообщение, количество созданных строк равно
количество подписчиков у пользователя. Например, если у пользователя есть 50 подписчиков
Будет создано 50 строк с содержанием поста
Поскольку я использую кассандру, чтобы поддерживать процветание и эффективность базы данных, я должен избегать использования , позволяющего фильтровать , для этого я использую вторичный индекс на viewer
колонка. Когда пользователь открывает канал новостей, этот запрос выполняется сервером SELECT * FROM content WHERE viewer = ?
, а затем все сообщения, созданные пользователями, за которыми следит пользователь, извлекаются и отображаются для пользователя в пользовательском интерфейсе
Это хороший и эффективный способ создания новостной ленты? будет ли он работать хорошо, когда сервис наберет больше пользователей?