Структура данных для лайков / фаворитов в приложении для социальных блогов - PullRequest
2 голосов
/ 28 июня 2019

Каков наилучший способ сохранения данных в дБ для отслеживания нажатия пользователем кнопки «Нравится» или «Нравится» или нет?

Я пробовал следующую структуру данных:

postId:{ ... like_count:123, user_who_liked:[uid1,uid2,uid3...] }

Когда вышеуказанные данные загружаются в клиент, мы можем проверить, понравилась ли клиенту сообщение, проверив, содержит ли массив user_who_liked идентификатор клиента или нет.Однако, если в массиве user_who_liked содержится более 1000 элементов, этот подход потребляет слишком много избыточной полосы пропускания.

Я нашел следующие данные json из Instagram:

{ ... viewer_has_liked: false viewer_has_saved: false viewer_has_saved_to_collection: false viewer_in_photo_of_you: false }

Этот подход кажется более эффективным, но как база данных узнает, понравился ли пользователь или нет?Хранят ли они кучу идентификаторов и проверяют, находится ли внутри него идентификатор пользователя?Являются ли эти логические атрибуты has_liked / has_saved производными?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...