Как структурировать базу данных Firebase для того, чтобы пользователи могли пользоваться любимыми продуктами, чтобы минимизировать затраты по стоимости и по времени? - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь понять, как наилучшим образом структурировать мою базу данных для размещения пользователя, предпочитающего продукт. Я конфликтую между следующими двумя подходами. Для контекста мои продукты находятся в БД реального времени, а моя пользовательская модель и любимая модель находятся в Firestore.

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

2. Когда пользователь добавляет элемент в избранное, я увеличиваю переменную «число избранных» в продукте и добавляю productID в список избранного пользователя. Это упростит получение продуктов с наибольшим количеством избранных, но усложнит, предпочтит и откажется от них.

Какой подход рекомендуется использовать с Firebase? Первый подход - это скорее решение для реляционных БД, и кажется, что это будет дорого, я знаю, что они рекомендуют держать базу данных Firebase на ровном месте. Каков будет более дешевый вариант с точки зрения времени и стоимости для пожарной базы?

1 Ответ

1 голос
/ 16 апреля 2020

Ваш первый подход будет дорогостоящим в Firestore, потому что за каждый продукт, помеченный как избранный, вам будет начислена одна запись документа, а при ранжировании вы будете платить по одной операции чтения для каждого «Любимый» объект, который возвращается по вашему запросу.

Второй подход звучит намного лучше, потому что вы фильтруете товары по свойствам. «Фаворитовать» и «фаворитовать» не так сложно, как вы думаете. Если вы говорите о списке, вы можете просто добавлять и удалять элементы, как описано в официальной документации .

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