Организация данных MongoDB для получения производительности - PullRequest
0 голосов
/ 16 мая 2019

Я строю БД, которая будет содержать некоторые пункты меню для отправки клиенту приложения. Эти пункты меню разделены на две основные категории:

  • локализовано (GeoJSON Multipolygon)
  • общее (это означает, что не зависит от местоположения пользователя, выбирающего)

Для повышения производительности на производстве, как мне организовать свои данные?

Лучше ли создавать три коллекции с именами соответственно: lowest-common-denom-items, localized-items и items?

Где в коллекции lowest-common-denom-items я буду хранить все идентификаторы предметов, которые должны всегда возвращаться независимо от местоположения.

Коллекция

И localized-items содержит только полигоны с идентификаторами элементов, которые должны быть возвращены внутри этого полигона (наряду с lowest-common-denom-items)

И, наконец, коллекция items будет содержать всех элементов без ссылки на позицию, "необработанную" сущность. Где хранятся все свойства Как ключи локали, значки URL и т. Д.

Таким образом, выборка будет работать так:

  1. Пользователь отправляет запрос на выборку с LAT, LNG
  2. API выбирает все идентификаторы элементов LCD
  3. Затем он выполняет гео-запрос к локализованной коллекции элементов, выбирая те элементы, которые соответствуют местоположению пользователя
  4. Объединяет два массива идентификаторов
  5. Выполняет окончательный запрос для коллекции элементов, выбирая только заинтересованные элементы

Или лучше хранить все в одной коллекции, помечая локализованные флажки, и выполнять запрос, который выбирает все за один снимок? Дело в том, что одна коллекция может стать большой. Очень большой. Может ли это стать проблемой в будущем для масштабируемости и общей производительности?

...