Мы используем Datastax Cassandra для нашей социальной сети, и мы проектируем/моделируем таблицы, которые нам нужны, это сбивает нас с толку, и мы не знаем, как проектировать некоторые таблицы, и у нас есть небольшие проблемы!
Как мы поняли, для каждого запроса у нас должны быть разные таблицы, и, например, пользователь A подписан на пользователей C и B.
Теперь в Cassandra у нас есть таблица posts_by_user
:
user_id | post_id | text | created_on | deleted | view_count
likes_count | comments_count | user_full_name
И у нас есть таблица в соответствии с подписчиками пользователей, мы вставляем информацию о сообщении в таблицу с именем user_timeline
, чтобы, когда пользователи-последователи посещали первую веб-страницу, мы получали сообщение из базы данных из таблицы user_timeline
.
А вот и таблица user_timeline
:
follower_id | post_id | user_id (who posted) | likes_count |
comments_count | location_name | user_full_name
Во-первых, правильно ли это моделирование данных для социальной сети Follow Base (подписчики, следующие действия)?
А теперь мы хотим подсчитать лайки поста, как вы видите, у нас есть количество лайков в обеих таблицах (user_timeline
, posts_by_user
), и представьте, что у одного пользователя 1000 подписчиков, тогда для каждого лайка мы должны обновить все 1000 строк в user_timeline
и 1 строку в posts_by_users
; И это не логично!
Тогда мой второй вопрос: Как это должно быть? Я имею в виду, каким должен быть понравившийся (любимый) стол?