Как моделировать данные в No SQL хранилище данных Firebase? - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу сохранить следующие данные: Пользователи, События, Участники

(аналогично приведенному здесь примеру Firebase: https://www.youtube.com/watch?v=ran_Ylug7AE)


Мое хранилище Firebase выглядит следующим образом:

Пользователи - Коллекция

    {
       "9582940055" : 
                       {
                         "name" : "test"
                       }
    }

Каждый пользователь - это отдельный документ. Я делаю это правильно?

Если да, я оставил номер мобильного телефона каждого пользователя как Document Id вместо auto id, так как номер мобильного телефона будет уникальным, и это поможет мне в запросах. Это правильно?


События - Коллекция

    {
       "MkyzuARd8Uelh0qD1WMa" : // auto id for every event
                       {
                         "name" : "test",                           
                         "attendees" : {
                                      "user": 'Lakshay'
                                       }
                       }
    }

Здесь я сохранил участников как Map внутри документа события. Это правильно, или я должен сделать участников в виде коллекции внутри документа события?

Кроме того, "user": 'Lakshay' внутри "attendees" - это просто строка. Желательно ли использовать reference тип данных Firebase?

Спасибо за помощь!

1 Ответ

1 голос
/ 10 февраля 2020

Каждый пользователь - это отдельный документ. Я делаю это правильно?

Да, это довольно часто. Изначально может показаться немного странным иметь документы с таким небольшим объемом данных, но со временем вы к этому привыкнете (и, вероятно, добавите больше данных каждому пользователю).

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

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

Здесь я сохранил участников как карту в документе события , Это правильно, или я должен сделать участников в виде коллекции внутри документа события?

Это зависит ...

  • Хранение событий для пользователя в одном документе означает, что вы ограничить количество событий, которые вы можете сохранить для пользователя, поскольку размер документа не может превышать 1 МБ.
  • Хранение событий для пользователя в его документе означает, что вы всегда читаете данные для пользовательских событий, даже когда вам может понадобиться только имя пользователя. Таким образом, вы будете читать больше данных, чем нужно, тратя впустую пропускную способность как для вас, так и для ваших пользователей.
  • Хранение событий внутри вложенной коллекции позволяет запрашивать их и читать подмножество событий пользователь.

  • С другой стороны: использование вложенной коллекции означает, что вы в конечном итоге читаете более мелкие документы. Таким образом, вы будете платить за чтение большего количества документов из вложенной коллекции, а за пропускную способность платить меньше.

Кроме того, «пользователь»: «Lakshay» внутри «участников» просто строка. Желательно ли использовать эталонный тип данных Firebase?

Это мало что меняет, так как не так много дополнительных функций, которые дает тип поля Firestore DocumentReference.

...