2015-03-28 5 views
0

Я пытаюсь внедрить службу отслеживания GPS для своего приложения. У меня есть услуга, чтобы надавить геолокационные данные на mongodb, который работает очень хорошо. Проблема в том, что каждое транспортное средство должно отправлять данные каждые 20 секунд.MongoDB Geolocation с использованием Spring MVC

Как требование, я должен показать последние 24-часовые данные на картах Google, что создает проблему для получения огромного набора данных. (4320 для одного транспортного средства). Есть ли какая-либо передовая практика в картах монго или google, чтобы получать меньше данных и показывать строку как историю? (Ответ "JSON")

ответ

0

Я предполагаю, что ваш JSON выглядит следующим образом:

{ 
    id: 42, 
    car_id: 102, 
    coordinates: [ 
    { lat: ..., lon: ..., timestamp: ... }, 
    { lat: ..., lon: ..., timestamp: ... }, 
    { lat: ..., lon: ..., timestamp: ... }, 
    ... 
    ] 
} 

Если вы используете JSON, то есть только 4 способа уменьшить размер:

  1. Remove неиспользованные данные

    1. Вы можете удалить повторяющиеся записи из вашего списка. Если автомобиль стоит на час, у вас будет 180 одинаковых записей подряд. Вы можете сохранить только один, потому что нарисованная линия на карте не будет выглядеть иначе.

    2. Удалите timestamp, если он вам не нужен. Если массив упорядочен, вам может не понадобиться отметка времени для сортировки.

  2. термоусадочную ваше представление данных

    1. Каждый символ имеет значение, если у вас есть 4320 записи. Таким образом, вы можете заменить, например, lat и lon с x и y. Это уменьшает размер на 4*4320 = 17280 символов.

    2. Изменить представление. Если вам не нужно штамп времени, вы могли бы просто уменьшить структуру данных coordinates: [[1,2],[3,4],[5,6],...] (где 1, 3 и 5 являются lat части и 2, 4, 6 являются lon части координат). Это может уменьшить размер JSON еще на 20-40%.

  3. сжимать данные

    1. Если возможно использование GZIP (или любой другой алгоритм сжатия). Таким образом, вы можете легко уменьшить выход JSON до 10-20% от исходного размера.
  4. Используйте более компактный формат данных

    1. Посмотрите протокола буферами (от Google). Spring поддерживает его, и есть также библиотека JavaScript.

    2. Существует несколько других протоколов, которые могут уменьшить размер данных. То есть Thrift (от Apache/Facebook), но я не знаю, поддерживает ли Spring/JavaScript.

Это в основном все, что вы можете сделать.

Смежные вопросы