У меня есть координаты lat/lon в 400-миллионной таблице разделенных разделов mysql. Таблица растет на 2000 записей в минуту, а старые данные размываются каждые несколько недель. Я изучаю способы пространственного анализа этих данных по мере их поступления.MySQL Postgresql/PostGIS
Для большей части анализа требуется найти, находится ли точка в определенном многоугольнике lat/lon или в каких полигонах содержится эта точка.
Я вижу следующие пути решения точки в многоугольнике (PIP) проблемы:
Создание функции MySQL, которая принимает точку и Geometry и возвращает логическое значение. Простой, но не уверен, как геометрия может использоваться для выполнения операций с координатами лат/лон, поскольку Геометрия предполагает плоские поверхности, а не сферы.
Создайте функцию mysql, которая принимает точку и идентификатор настраиваемой структуры данных и возвращает логическое значение. Вершины многоугольников могут быть сохранены в таблице, а функция может вычислять PIP с использованием сферической математики. Большое количество точек полигона может привести к огромной таблице и медленным запросам.
Оставьте данные о точках в mysql и сохраните данные полигона в PostGIS и используйте сервер приложений для запуска запроса PIP в PostGIS с помощью пробной точки в качестве параметра.
Отправляйте приложение из MySQL в Postgresql/PostGIS. Это потребует больших усилий для переписывания запросов и процедур. Я все еще могу это сделать, но насколько хорош Postgresql при обработке 400 миллионов строк. Быстрый поиск в google для «mysql 1 billion rows» возвращает много результатов. тот же запрос для Postgres не возвращает никаких релевантных результатов.
Хотелось бы услышать некоторые мысли & предложения.
У меня есть личный опыт работы с Postgres с 300M + таблицами строк - без пота. Skype использует Pg для отслеживания соединений, пользователей, учета и т. Д. Все, кроме самого канала связи. Это много миллиардов записей. – dbenhur
Итак, насколько легко/сложно добраться до 300M? Какая часть настройки/оптимизации нужна? Я читал о Skype, используя Postgres, но крупные компании могут бросать ресурсы и получать что-нибудь на работу. Я ищу такие входы, как ваши. – Dojo
Наша база данных PostgreSQL обрабатывает до ~ 5000 транзакций в секунду, ~ 600 миллионов записей в месяц за последние 2 года. Предыдущий сервер MySQL не мог справиться с этим на одном и том же оборудовании. –