Я строю БД, которая будет содержать некоторые пункты меню для отправки клиенту приложения. Эти пункты меню разделены на две основные категории:
- локализовано (GeoJSON Multipolygon)
- общее (это означает, что не зависит от местоположения пользователя, выбирающего)
Для повышения производительности на производстве, как мне организовать свои данные?
Лучше ли создавать три коллекции с именами соответственно: lowest-common-denom-items
, localized-items
и items
?
Где в коллекции lowest-common-denom-items
я буду хранить все идентификаторы предметов, которые должны всегда возвращаться независимо от местоположения.
Коллекция
И localized-items
содержит только полигоны с идентификаторами элементов, которые должны быть возвращены внутри этого полигона (наряду с lowest-common-denom-items
)
И, наконец, коллекция items
будет содержать всех элементов без ссылки на позицию, "необработанную" сущность. Где хранятся все свойства Как ключи локали, значки URL и т. Д.
Таким образом, выборка будет работать так:
- Пользователь отправляет запрос на выборку с LAT, LNG
- API выбирает все идентификаторы элементов LCD
- Затем он выполняет гео-запрос к локализованной коллекции элементов, выбирая те элементы, которые соответствуют местоположению пользователя
- Объединяет два массива идентификаторов
- Выполняет окончательный запрос для коллекции элементов, выбирая только заинтересованные элементы
Или лучше хранить все в одной коллекции, помечая локализованные флажки, и выполнять запрос, который выбирает все за один снимок? Дело в том, что одна коллекция может стать большой. Очень большой. Может ли это стать проблемой в будущем для масштабируемости и общей производительности?