Я пытаюсь понять, как наилучшим образом структурировать мою базу данных для размещения пользователя, предпочитающего продукт. Я конфликтую между следующими двумя подходами. Для контекста мои продукты находятся в БД реального времени, а моя пользовательская модель и любимая модель находятся в Firestore.
1. Когда пользователь добавит элемент в избранное, создайте новый любимый объект в Firestore с помощью productID и userID. Это будет означать, что для получения продуктов с наибольшим количеством избранных я должен отсортировать избранные объекты по идентификатору продукта и сосчитать наибольшее. И чтобы вернуть список избранных пользователей, мне нужно отсортировать список всех избранных по идентификатору пользователя. - Я всегда мог вставить любимый предмет в нечто вроде алогии (которую я использую для полнотекстового поиска) для более быстрой сортировки, но затем я обновляюсь дважды и храню дважды.
2. Когда пользователь добавляет элемент в избранное, я увеличиваю переменную «число избранных» в продукте и добавляю productID в список избранного пользователя. Это упростит получение продуктов с наибольшим количеством избранных, но усложнит, предпочтит и откажется от них.
Какой подход рекомендуется использовать с Firebase? Первый подход - это скорее решение для реляционных БД, и кажется, что это будет дорого, я знаю, что они рекомендуют держать базу данных Firebase на ровном месте. Каков будет более дешевый вариант с точки зрения времени и стоимости для пожарной базы?