Какую почитать литературу по проектированию систем мониторинга в реальном времени?
Здравствуйте, уважаемые форумчане. В недалеком будущем планируется рефакторинг системы GPS трекинга транспорта.
Задача такая:
Есть худо-бедно работающая система с 2 пользователями. У каждого пользователя есть порядка 100 автомобилей с установленными GPS трекерами. Координаты автомобилей хранятся в БД. В личном кабинете пользователя есть возможность отображения на карте пройденного пути некоторой машины. + Есть возможность составления отчетов (сколько было стоянок на маршруте, средняя скорость движения и т.д.)
В недалеком будущем планируется перепроектировать систему таким образом, что бы ей могли пользоваться до 100 пользователей (у каждого пользователя до 100 автомобилей). Территориально пользователи находятся в Москве и МО.
С учетом новых требований я выделил основные сложные моменты:
Стремительный рост хранимых данных.
За пол года у 2 пользователей накопилось около 100 млн координат автомобилей. А в идеале планируем вытянуть 100 пользователей. Более того, планируем хранить не только координаты автомобилей, но и значения, передаваемые различными датчиками.
Оперативная обработка поступающих данных.
Пример, автомобиль отклонился от указанного маршрута, на почтовый ящик пользователя отправляется сообщение. Получили от датчика N критичное значение (например, обороты двигателя превышают допустимое значение) отправили некоторое уведомление.
Составление статистических расчетов для логистов.
Отчеты по средней скорости движения на участке N, общее количество стоянок и т.д.
Подскажите, пожалуйста ответы на следующие вопросы:
Существует ли литература (книги, статьи из журналов и т.д.) по проектированию систем подобного рода ? Если у вас есть что-то на примете, поделитесь, пожалуйста ссылками.
Какой стек технологий лучше использовать для данной системы ?
Здесь можно использовать различные стеки:
все зависит от того, что Вы сейчас храните и что будете хранить в дальнейшем
и как часто датчики отсылают свои координаты на сервер.
Сможете уточнить?
Сейчас хранится следующая информация:
1) Координаты устройства (широта, долгота).
2) Время получения запроса.
3) Скорость автомобиля на котором закреплено устройство.
Устройство отправляет запрос 1 раз в 5 минут.
Согласно требованиям у нас будут 100 пользователей, у каждого пользователя по 100 машин. Предположим, что на машине будет только устройство, отслеживающее координаты. Итого 10 000 запросов. В чуть более далеком будущем предполагается, что на автомобилях будут устройства отслеживающие обороты двигателя, объем топлива в баке (могут добавиться новые устройства). Частота отправки запросов 1 раз в 5 минут.
У пользователя должна быть возможность:
1) Отслеживать в реальном времени расположение транспорта, обороты двигателя, объем топлива.
2) Составлять различного рода отчеты за периоды день, неделя, месяц, год.
Система должна отправлять различные уведомления пользователю:
1) Автомобиль отклонился от указанного маршрута.
2) Критическое значение оборотов двигателя или недостаточно бензина в баке (т.е. еще нужна сущность, описывающая предельно допустимые значения передаваемые устройством).
3) Нужно отправлять уведомления если автомобиль слишком долго стоит на некотором участке маршрута (понятие "слишком долго" будет разным для разных пользователей, так же как и участки маршрутов ).
user2002: прежде чем куда-то смотреть, необходимо составить архитектуру базы. Пример: не зачем хранить рассчитываемые промежуточные значения. Например, отрезки участков (ограниченные прямые) и среднюю скорость можно хранить всего 5-ю параметрами.
2. Что значит "атвомобиль отклонился"?
Пока - Вам далеко до выбора базы. Спроектируйте её изначально на основе ролевой модели объектов.
xmoonlight:
"... не зачем хранить рассчитываемые промежуточные значения. Например, отрезки участков (ограниченные прямые) и среднюю скорость можно хранить всего 5-ю параметрами. ..."
Не могли бы ли Вы рассказать об этом подробнее ?
" ... Что значит "атвомобиль отклонился" ... " Не корректно выразился.
Поясню на примере.
1) Для автомобиля X есть маршрут из А в B.
2) Автомобиль X посетил точку C, которой нет в маршруте.
user2002:
1. ну lat1,lon1 - lat2,lon2, и speed (avg.) посчитанная в момент формирования записи в бд.
2. знаете что такое корридор следования? если нет - добро пожаловать в авиацию!)