Обновление: по состоянию на май 2019 года облачное хранилище пожаров теперь поддерживает запросы групп сбора .
Теперь вы можете структурировать данные в любом случае и по-прежнему иметь возможность выполнять запросы по пользователям.
Оригинальный ответ
Если я правильно понимаю, вы спрашиваете о компромиссе между наличием плоских коллекций и подколлекций.
Что касается обновлений, то никаких существенных различий нет. Стоит обратить внимание на наличие полей, которые группируются вокруг одного значения. Например, для плоских коллекций, если у продуктов есть поле времени обновления, по умолчанию вы будете ограничены 500 обновлениями в секунду для всех пользователей. С продуктами, вложенными в пользователей, вы ограничены 500 обновлениями в секунду на пользователя. Однако с помощью плоских коллекций вы можете обойти эту проблему, отключив индекс по умолчанию для одного поля во время обновления и создав составной индекс (пользователь, время обновления). Как только вы это сделаете, это эквивалентно.
Реальная разница сводится к тому, какие запросы возможны. В Firestore, как он существует сегодня, вы можете выполнять запросы только внутри дерева вложенных коллекций. Так, например, если вы хотите искать товары по определенному названию или поставщику, вы сможете выполнять поиск только в пределах одного пользователя.
Если вы сгладите коллекции так, что продукты являются коллекцией верхнего уровня, вы можете делать запросы к пользователям.
Обратите внимание, что запросы группы сбора - это функция, которую мы разрабатываем, которая снимет это ограничение. После запуска вы сможете структурировать данные в любом случае и по-прежнему сможете выполнять запросы между пользователями.