Массив или Подколлекция для хранения событий, загруженных пользователем - PullRequest
0 голосов
/ 01 октября 2018

Я создаю приложение для событий с реагировать на родной.Я просто хотел получить совет, который был бы лучшим, более производительным и масштабируемым способом структурирования моей модели данных в FireStore.У меня есть 2 коллекции событий и пользователей.

Пользователь создает событие, которое входит в коллекцию событий. В моем приложении пользователи могут перейти на главную страницу и просмотреть список событий из коллекции событий.Я также хочу, чтобы в приложении была вторая страница - страница «Профиль пользователя», где пользователи могут просматривать список своих собственных событий, обновлять и удалять их.Мой вопрос в том, что было бы лучше:

  1. для хранения ключа события в массиве в users / user1
  2. хранить в основном дублирующее событие во вложенной коллекции, называемой событиями в users / user1

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

событие, вероятно, будет иметь больше полей в будущем, например поле комментариев и т. Д., Поэтому я чувствую, просто перейдя с опцией1 Мне не нужно продолжать выполнять двойную работу, хотя мне, возможно, придется читать дважды, т. Е. Читать события users / user1-> (затем массив): [event: {dockey}], а затем использовать этот ключ для получения фактического документа события вколлекция событий.

Спасибо за любые отзывы и советы

1 Ответ

0 голосов
/ 01 октября 2018

Нет простого правильного или неправильного ответа, когда вам нужно выбрать между этими двумя вариантами.Дублирование данных является ключом к быстрому чтению не только в базе данных реального времени Fireabase или Cloud Firestore, но и в целом.Каждый раз, когда вы добавляете одни и те же данные в другое место, вы дублируете данные в пользу более быстрой производительности чтения.К сожалению, взамен у вас есть более сложное обновление и более высокое использование памяти и памяти.Но вы должны отметить, что дополнительные вызовы в базе данных реального времени Firebase, не дорогие, в Firestore есть.Сколько данных дублирования по сравнению с дополнительными вызовами базы данных является оптимальным для вас, зависит от ваших потребностей и вашей готовности отказаться от «единой точки определения», которую также можно назвать очень субъективной.

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

Пожалуйста, также посмотрите на мой ответ из этой публикации гдеЯ объяснил больше о collections, maps и arrays в Firestore.

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