MySQL Postgresql / PostGIS

У меня есть координаты широта/долгота в таблице mysql, разделенной на 400 миллионов строк. Таблица растет на 2000 записей в минуту, а старые данные сбрасываются каждые несколько недель. Я изучаю способы пространственного анализа этих данных по мере их поступления.

Большая часть анализа требует определения того, находится ли точка в определенном многоугольнике широты/долготы или какие многоугольники содержат эту точку.

Я вижу следующие способы решения проблемы точки в многоугольнике (PIP):

  1. Создайте функцию mysql, которая принимает точку и геометрию и возвращает логическое значение. Просто, но не уверен, как можно использовать геометрию для выполнения операций с координатами широты и долготы, поскольку геометрия предполагает плоские поверхности, а не сферы.

  2. Создайте функцию mysql, которая принимает точку и идентификатор пользовательской структуры данных и возвращает логическое значение. Вершины многоугольника можно хранить в таблице, а функция может вычислять PIP, используя сферическую математику. Большое количество точек полигона может привести к огромной таблице и медленным запросам.

  3. Оставьте данные точек в mysql и сохраните данные полигонов в PostGIS и используйте сервер приложений для выполнения запроса PIP в PostGIS, указав точку в качестве параметра.

  4. Перенесите приложение из MySQL в Postgresql/PostGIS. Это потребует больших усилий по переписыванию запросов и процедур. Я все еще могу это сделать, но насколько хорош Postgresql в обработке 400 миллионов строк.Быстрый поиск в Google «mysql 1 миллиард строк» ​​дает много результатов. тот же запрос для Postgres не возвращает соответствующих результатов.

Хотел бы услышать некоторые мысли и предложения.

11
задан Dojo 14 March 2012 в 04:12
поделиться