Я работаю над приложением, которое имеет более 2 миллионов пользователей. Это собирается ввести функцию на основе местоположения. С самого начала мы хотим предоставить пользователю уведомление на основе местоположения, которое будет изменено в зависимости от его местоположения / региона. Я использую технологии PostGIS и Mapbox. У меня есть пользовательский полигон, который является индикатором другого региона. Я знаю, что могу использовать ST_Within из PostGIS для получения информации о многоугольнике, каждый раз отправляя на сервер долготу и широту. Я использую функцию Folloing, чтобы получить регион
CREATE OR REPLACE FUNCTION getRegion(getlng numeric, getlat numeric, OUT outregion text)
as $$
BEGIN
SELECT region into outregion
FROM mypolygon
WHERE ST_Within(
ST_GeometryFromText(
'POINT('|| getlng ||' '|| getlat ||')', 4326
),
geom);
END; $$
LANGUAGE PLPGSQL;
и вызов функции по
SELECT getRegion(getlng, getlat);
Но поскольку миллионы пользователей будут увеличивать нагрузку на сервер базы данных, необходимо увеличить TPS. Есть ли другой способ получить полигон / регион из точки рядом с использованием postgis напрямую? Полигон региона является изменяемым, а не постоянным.
Существует метод, называемый приведение лучей , и недавно mapbox поддерживает запрос с использованием векторных плиток. Является ли приведение лучей или запрос в векторных листах лучшим подходом для выполнения той же задачи? (Снова запомните, многоугольник не является постоянным.)
В двух словах, я на самом деле хочу узнать лучшие практики, которые в настоящее время используются сообществом для снижения нагрузки на сервер и экономии времени.