У меня есть приложение, которое, как и многие другие приложения, позволяет пользователям просматривать записи и добавлять их в избранное, чтобы они сохранялись в списке для последующего доступа. В настоящее время мой стек - это база данных Firebase для серверной части и Swift iOS для клиента, но это больше вопрос общих рекомендаций.
В моем приложении есть много мест, где пользователь может просмотреть сообщение, и для всех оно показывает, одобрило ли оно его или нет. Теперь я достигаю этого, сохраняя UID сообщения в списке для каждого пользователя в Firebase, чтобы его можно было сравнивать с каждым разом, когда пользователь просматривает сообщение в приложении. Это прекрасно работает, но я не уверен, что его можно масштабировать, потому что он требует извлекать весь список избранных почтовых UID для текущего пользователя при каждом входе в приложение. Для нескольких десятков или сотен избранных постов это, похоже, не проблема, но после нескольких лет и тысяч избранных публикаций я думаю, что это может стать проблемой для данных, памяти и обработки.
Существуют ли более эффективные рекомендации для этого типа функций? Приятно, что это применимо и ко многим другим типам функций, таким как списки лайков и друзей.
Редактировать:
Вот как моя база данных Firebase настроен в данный момент. Опять же, эта структура в настоящее время работает для меня, и у меня еще не было проблем с ней, но я не уверен, масштабируема ли она, получая полный список favoritedPostIds
для текущего пользователя каждый раз, когда они входят в систему. полностью готовы реструктурировать всю базу данных, если есть лучший способ.
posts {
post-1-UID {
title: "post1",
text: "blah"
},
post-2-UID {
title: "post2",
text:"blahblah"
}
},
users {
user-1-UID {
name: "User1",
email: "user1@email.com"
},
user-2-UID {
name: "User2",
email: "user2@email.com"
}
},
favoritedPostIds {
user-1-UID {
post-2-UID: "2019-11-19T19:12:51.240GMT-05:00"
},
user-2-UID {
post-1-UID: "2019-10-16T19:10:57.340GMT-05:00",
post-2-UID: "2019-11-24T11:21:05.610GMT-05:00"
}
}