2012-04-28 3 views
1

Я создаю приложение, в котором пользователи могут писать сообщения и другие пользователи, и могут комментировать эти сообщения. Для достижения этой цели я использую таблицы, которые нравятся POSTS, LIKES, COMMENTS. (Я использую базу данных parse.com для хранения этих Таблица).Как получить самый популярный пост?

ПОСТЫ имеют поля, такие как сообщения дан, содержание, userWhoMadeThePost, dateOfPosting

ЛЮБИТ содержит filelds как идентификатор, postOnWhichLikeWasMade (внешний ключ к сообщению (сообщения дан)), userWhoLiked, dateofLike

КОММЕНТАРИИ есть ID, содержание, postOnWhichCommentWasMade (внешний ключ к POSTS (postId)), userWhoCommented, dateOfComment

Я хочу получить наиболее популярные сообщения (сообщения с большинством комментариев и комментариев).

  1. Первый способ сделать это не насчитать не почт и любит для каждого поста каждый раз, когда запрос сделан для популярных постов, но это может стать очень много времени, если есть миллионы сообщений.
  2. Другой способ сделать это одним способом - включить «noOfLikes» и «noOfComments» в таблицу POSTS, поэтому, чтобы получить популярные сообщения, мне нужно будет получить доступ только к почтовой таблице, но проблема с этим подходом - всякий раз, когда пользователь делает комментарий по почте, тогда мне придется увеличивать «noOfComments» в таблице POSTS, а также делать запись в таблице COMMENTS, проблема начинается, когда приращение успешно выполняется в таблице POST и до внесения изменений в соединение COMMENTS теряется , В этом случае таблица POST и COMMENTS будет показывать неверные данные.

Как это сделать?

ответ

2

Это было бы просто, если бы вы имели контроль над базой данных, но делает это с Parse означает, что у вас есть две основные проблемы (один из которых вы уже упомянули):

  1. Насколько я могу сказать , Parse не позволяет группировать запросы. Это означает, что (с вашей схемой) на самом деле невозможно получить наиболее понравившиеся/прокомментированные сообщения, не получая все из них. Это связано с тем, что вы не можете динамически добавлять новый столбец с количеством похожих/комментариев, как в стандартном запросе SQL (с использованием JOIN и GROUP BY).
  2. Вы не можете обновить несколько объектов за одну транзакцию, поэтому есть возможность добавить комментарий, но количество комментариев в почтовом объекте не изменится.

Это, как говорится, я думаю (по крайней мере, если вы настаиваете на использовании синтаксического анализа), вы должны добавить столбцы noOfLikes и noOfComments в объект Post. Он не только обеспечивает единственное жизнеспособное решение для извлечения N верхних сообщений (не получая их всех), но фактический риск несоответствий на мой взгляд довольно низок. Вы всегда можете улавливать сетевые (или другие) исключения и временно сохранять запросы на обновление локально и повторять их позже.

Смежные вопросы