Можно ли улучшить конструкцию этой системы?

# #firebase #google-cloud-platform #google-cloud-firestore #nosql

Вопрос:

Я новый пользователь NoSQL, и я хочу знать, является ли эта идея ходом профессионального геймера или ошибкой новичка?

ЧЕГО Я ХОЧУ ДОСТИЧЬ

Я разрабатываю систему, которая использует хранилище firebase для управления данными, что позволяет зарегистрированным пользователям загружать изображения в различные элементы, такие как горы, еда, дом и т. Д. По разным темам, Поэтому вы заходите в одну из этих тем и загружаете изображение, связанное с этим, чтобы, когда другие пользователи переходят в раздел (горы, еда, дом и т. Д.), Могли визуализировать то, что было загружено.

ПРОБЛЕМА

Насколько я видел, пользователь не может хранить изображение с уникальным идентификатором, поэтому будут переопределения

«РЕШЕНИЕ»

Пользователь может хранить коллекцию предметов с идентификаторами uniques, поэтому, когда пользователь загружает изображение в такую тему, как Еда, изображения хранятся в их собственной коллекции с тегом темы, а также идентификаторы пользователей будут сохранены в файле. Поэтому, когда другие пользователи просматривают раздел продуктов питания, алгоритм будет просматривать пользователей, которые загрузили фотографию, затем просматривает их коллекцию изображений в поисках тега и извлекает это изображение.

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

вопрос

Есть ли какой-нибудь способ сделать эту вещь лучше?

Любая документация или руководство очень помогут

Спасибо

Ответ №1:

Поэтому, когда пользователь загружает изображение в такую тему, как Еда, изображения хранятся в их собственной коллекции с тегом темы, а также идентификаторами пользователей, которые будут сохранены в файле.

Да, это обычная практика.

Поэтому, когда другие пользователи просматривают раздел продуктов питания, алгоритм будет просматривать пользователей, которые загрузили фотографию, затем просматривает их коллекцию изображений в поисках тега и извлекает это изображение.

Звучит хорошо. В коде должно выглядеть так:

 val db = FirebaseFirestore.getInstance()
db.collection("photos").whereEqualTo("tag", "food")
 

Есть ли какой-нибудь способ сделать эту вещь лучше?

Нет, вы нашли самое простое и простое решение.

Комментарии:

1. Очень признателен за ваш ответ! У меня есть еще один маленький вопрос, знаете ли вы, как работает алгоритм этой службы (FireBase Auth)? Когда пользователи входят в систему (если все пользователи с идентификаторами находятся в одном пути), им просто нужно проверить один за другим, чтобы увидеть, есть ли совпадение?

2. Я не могу проголосовать в данный момент, Алекс, я действительно хотел бы ОТРЕДАКТИРОВАТЬ: Хорошо, вот и мой голос