Я создаю приложение, в котором пользователи могут следовать друг за другом.Чтобы решить, как смоделировать его в FireStore, я хотел бы знать, как размер коллекции влияет на производительность запросов.Сначала я подумал о том, чтобы сделать это так:
relationships(coll.)
----{userId_1}(document)
--------following(coll)
------------{someId1}(document)
------------{someId2}(document)
.....
--------followers(coll)
------------{someId5}(document)
------------{someId7}(document)
.....
----{userId_2}(document)
--------following(coll)
------------{someId11}(document)
------------{someId24}(document)
.....
--------followers(coll)
------------{someId56}(document)
------------{someId72}(document)
.....
Итак, у меня будут основные связи коллекций, тогда каждый документ будет представлять одного пользователя, и у него будет две коллекции - подписчики и подписчики, и в этих коллекциях я быхранить документы с такими данными, как id, name, email, ... Затем, когда user1 хочет видеть своих подписчиков, я получаю все документы в отношении Relations / userId_1 / последователи, и если он хочет видеть, за кем он следует, я получаю документы под связями/ userId_1 / follow
Я также думал о том, чтобы сделать это следующим образом:
relationships(coll)
----{user5id_user4id}(document)
--------user1:"user5id" (field)
--------user2:"user4id" (field)
.........(other fields)
----{user4_user5}(document)
--------user1:"user4id" (field)
--------user2:"user5id" (field)
.........(other fields)
У меня будет одна основная связь коллекции, где каждый документ будет представлять одну следующую связь, имя документа будет firstUserId_secondUSerId (означает, что firstUserId следует за secondUserId), и у меня также будет два поля user1 и user2, в которых будут храниться идентификаторы двух пользователей, где user1 следует за user2. Поэтому, если я {myUserId} и мне хотелось бы получить всех людей, за которыми я следую, я бы сделал запросна отношения коллекция, где user1 = myUserId И если я хотел бы получить всех людей, которые следуют за мной, я бы сделал запрос о сборе отношений, где user2 = myUserId, так как каждый документ представляет отношение user1 после user2.
Так что мой вопрос, которыйспособ будет более эффективным с запросом данных.В первом случае у каждого пользователя будет коллекция его подписчиков / подписчиков, и я просто получу документы, во втором случае в связи будет много документов, представляющих отношение user1-> follow-> user2.Я знаю, что мне выставят счет по количеству документов, возвращаемых функцией запроса, но как быстро это произойдет, если потребуется поиск по большой коллекции.