Вот наша проблема:
Мы создаем каталог сотрудников. Каждый сотрудник в организации сможет искать и просматривать всех других сотрудников в той же организации.
В настоящее время мы рассматриваем два различных подхода к хранению и управлению сотрудниками:
Подход A
Поддерживать подборку сотрудников в каждой организации. В этой модели каждый сотрудник будет иметь свой собственный документ.
Преимущество этого подхода состоит в том, что мы получаем возможность использовать все функции, которые поставляются с вложенными коллекциями в FireStore. Мы можем легко добавлять, обновлять и удалять сотрудников, и нет реальных изменений, которые нам нужно было бы вносить по мере роста коллекции.
Основная проблема этого подхода заключается в том, что у нас будет тонна читает. Если мы возьмем компанию с 1000 сотрудников и предположим, что каждый сотрудник посещает каталог 5 раз в день, мы смотрим 1,000 * 5 * 1,000 = 5,000,000 reads/day
. Похоже, что слишком много операций чтения для набора ресурсов, которые будут меняться только несколько раз в день (при условии оттока сотрудников).
Очевидное решение этой проблемы - кэширование сотрудников, но я Я не совсем уверен, как мы можем сделать это без использования облачной функции для извлечения сотрудников?
Подход B
Ведение массива или сотрудников в каждом документе организации. В этой модели все сотрудники будут существовать в документе организации.
Преимущество этого подхода состоит в том, что нам нужен только один прочитанный документ, чтобы выбрать всех сотрудников. Это означает, что получение коллекции будет намного быстрее и дешевле.
Основная проблема этого подхода заключается в том, что нам придется разделить документ организации по мере увеличения размера массива сотрудников. Это не должно быть слишком большой проблемой, пока не будет> 5 тыс. Сотрудников, но это все еще кажется довольно грязным. После того, как массив разделит его на части, нам также потребуется определить, к какому блоку принадлежит каждый сотрудник, что усложняет обновления.
Говоря об обновлениях, этот подход также усложняет обновления сотрудников, так как каждый раз, когда сотрудник обновляется, весь массив придется переписать.
Есть ли другой лучший подход к этой проблеме, или я пропускаю какое-то простое решение?
Заранее спасибо.