Firestore Как структурировать данные для пересечения - PullRequest
0 голосов
/ 11 января 2019

Как можно структурировать данные в Firestore для поиска пересечения элементов? Например:

  • Комплект 1 содержит: a, b, c
  • Комплект 2 содержит: d, e, f
  • Комплект 3 содержит: d, e, h
  • Комплект 4 содержит: r, f, x

Используя приложение, человек выбирает, что у него есть набор 1 и 2, он должен вернуть набор 3. Если он выберет набор 1 и 3, было бы полезно показать, что покупка набора 4 будет означать, что у него есть набор 2.

Этот пример крошечный по сравнению с общим набором данных. Есть много тысяч комплектов и миллионов деталей.

Я думаю, что способ структурировать эти данные состоит в том, чтобы между ними было много совпадений. Там должно быть 2 коллекции верхнего уровня, один для комплектов и один для деталей. Коллекция комплектов будет содержать документы для каждого комплекта, которые включают в себя карту деталей, где у каждой детали есть идентификатор и количество. Коллекция частей будет содержать документы для частей. Каждая часть будет иметь идентификатор, который соответствует идентификатору в картах документов комплекта и содержит массив идентификаторов комплекта.

Приложение прочитает наборы, которые возвращают потенциально тысячи деталей, затем прочитает каждую из этих частей и получит все номера комплектов, затем прочитает все эти комплекты и увидит, для каких из них имеются все детали. , Это, вероятно, сработает, но по мере роста базы данных будут считываться тысячи документов за поиск. Есть ли лучший способ хранить данные, чтобы уменьшить количество документов, но при этом масштабировать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...