Структура базы данных для запросов на основе местоположения - PullRequest
0 голосов
/ 19 сентября 2018

Я занимаюсь разработкой приложения, в котором пользователь может запрашивать данные на основе своего текущего местоположения.Так, например, у меня есть большой пул локальных магазинов по всему миру, и когда пользователь нажимает на запрос, только магазины рядом с его местоположением запрашиваются для соответствия.Как и в случае с Tinder, в базе данных много людей, но один пользователь может видеть только людей вокруг своего местоположения.Как должна быть структурирована база данных, потому что я полагаю, что просто запрашивать весь пул базы данных, возможно из миллиона записей, чтобы найти людей, которые соответствуют вашему географическому местоположению, является плохой практикой?Какую архитектуру используют подобные приложения?Спасибо за советы.

1 Ответ

0 голосов
/ 19 сентября 2018

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

В частности, вам понадобится пространственный двумерный индекс для столбца.PostGIS отлично подходит для этого: http://revenant.ca/www/postgis/workshop/indexing.html

Затем при запросе используйте ST_DWithin .

Если вам интересно узнать, как это на самом деле выглядит при закладкев памяти / на диске, начните с индексов r-дерева: https://en.wikipedia.org/wiki/R-tree

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