Firestore Запрос о высокой производительности коллекции - PullRequest
0 голосов
/ 28 апреля 2019

Я создаю приложение, в котором пользователи могут следовать друг за другом.Чтобы решить, как смоделировать его в 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.Я знаю, что мне выставят счет по количеству документов, возвращаемых функцией запроса, но как быстро это произойдет, если потребуется поиск по большой коллекции.

1 Ответ

1 голос
/ 28 апреля 2019

Размер коллекции не влияет на производительность или стоимость запроса. И то, и другое полностью определяется размером результата (количеством документов). Таким образом, запрос для 10 документов из 100 выполняется и стоит столько же, сколько запрос для 10 документов из 100 000. Размер 10 - единственное, что здесь имеет значение.

См. Также: Масштаб запросов зависит от размера набора результатов, а не от размера набора данных

...