В общем: держите хранилище данных как можно более мелким, т. е. избегайте вложенных коллекций и вложенности.
Данные могут быть связаны один к одному, один ко многим или многие ко многим. Firestore — это автоматически индексируемое хранилище данных в реальном времени. Firestore часто подписывается, а не просто на одноразовый запрос/ответ (природа системы в реальном времени).
Что касается модели данных Firestore, всегда учитывайте Как я буду запрашивать это хранилище данных?. Используйте вложенные коллекции, массивы и карты экономно (редко) и только в случае необходимости (и, скорее всего, вам это не нужно). Используйте автоматический идентификатор против удобочитаемого идентификатора, например. используйте 000kztLDGafF4uKb8Cal
вместо banana
для идентификаторов документов.
По мере увеличения функциональности приложения сценарии на стороне сервера с помощью Cloud Functions for Firebase и/или Admin SDK становятся бесценным инструментом для управления (создания и индексирования) отношениями данных «многие ко многим». Например, полнотекстовый поиск не поддерживается в Firestore. Это сводится к тому, что кажется препятствием для реализации надежных функций поиска в вашем приложении.
В заключение старайтесь избегать вложенных коллекций, вложений, массивов и карт. Следуйте принципу «будь проще, глупее», KISS. Как только ваше приложение масштабируется и/или требует дополнительных функций, можно использовать сценарии на стороне сервера, чтобы ваше приложение оставалось отзывчивым (быстрым), предлагая при этом надежные функции.
person
Ronnie Royston
schedule
12.03.2019