Какое архитектурное решение подходит для хранения и работы с данными геокоординат при высоких нагрузках?
Всем доброго времени суток!
Я участвую в разработке высоконагруженной системы, значительную часть данных которой составляют географические координаты (пара latitude, longitude, в градусах, точность - 0.00001 градуса).
Проект спроектирован по микросервисной архитектуре.
В системе есть несколько таблиц (сущностей), для которых организован gps-трекинг. Геокоординаты складываются в таблицы, ассоциированные с этими сущностями (тек. момент - 2). Запросов на добавление геокоординат- 5 млн/минуту, для каждой сущности.
Текущая задача, состоит в том, чтобы считать статистику по нескольким показателям, сгруппированных относительно геокоординат. Причем статистика должна иметь возможность фильтрации по всем полям (в том числе по геокоординатам, в том числе по радиусу в км, относительно искомой геокоординаты).
Вопрос №1 в том, каким образом лучше всего организовать подсчет и хранение такой статистики?
В данный момент, на каждый "отчет" статистики создана своя таблица. Базой выбрана PostgreSQL, с расширением PostGis.
Для таблиц статистических "отчетов", назначены индексы GiST. Они позволяют быстро фильтровать геокоординаты относительно искомой геокоординаты (Index Scan).
Данные в таблицах статистических "отчетов" пересчитываются по таймеру.
Вопрос №2 нормально ли текущее существующее решение. Можно ли с ним будет работать далее?