dom1n1k
@dom1n1k

Как лучше хранить GPS-треки в БД?

Вопрос теортический для размышления.

Есть много GPS-треков, в каждом из них много точек. Что значит много? Поскольку вопрос теоретический, конкретных цифр не назову, но потенциально может быть до нескольких миллионов и там и там. То есть перемножая одно на другое, получаем триллион.

Как лучше организовать хранение в БД? Мне один товарищ сказал, мол, делаем таблицу треков и таблицу точек. Все точки скопом попадают в неё, а когда надо получить конкретный трек, идет выборка точек по id трека и сортировка по порядку. Мне кажется, это не очень эффективно и будет отлично работать на небольших объемах, но с их ростом очень быстро ляжет.

Хранить точки каждого трека в виде блоба? Еще более странно.
Смотреть в сторону NoSQL?
Может есть стандартные схемы?
  • Вопрос задан
  • 990 просмотров
Решения вопроса 2
@Fixid
PostgreSQL + PostGis. Хранить в виде обычных координат желаемой точности. Возможно выборка любой сложности.
Сейчас у меня база координат занимает более 70гб, выборка координат внутри желаемого полигона занимает примерно 6мс на обычном hdd.
При желании можно треки запихать в виде multiline из которого потом легко вытащить отдельные точки

P.S. связку PostgreSQL + PostGis использует OSM, где база планеты в распакованном виде легко переваливает за 500гб
Ответ написан
Zverik
@Zverik
Специалист по OpenStreetMap
Правильным будет не хранить треки в БД. Сначала ответьте на вопрос (не здесь, а для себя), зачем это нужно. Часто достаточно загружать треки в gpx куда-нибудь на сервер — например, на амазон. А в базе хранить индексы: например, предельно упрощённый LineString, точки начала и конца, какие-то важные вехи, по которым будут запросы. Другими словами, отдельно блобы gpx (в амазоне, в append-only kv-базе и т.п.), отдельно метаданные для потенциально сложных запросов. Геоданные, конечно, лучше хранить в PostGIS, как Fixid ответил.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Можно использовать геоданные в реляционных БД. Например в MS SQL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы