Каков наилучший способ сохранения данных в дБ для отслеживания нажатия пользователем кнопки «Нравится» или «Нравится» или нет?
Я пробовал следующую структуру данных:
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 производными?