我在一个拥有四亿行分区的MySQL表中拥有纬度/经度坐标。该表每分钟增长2000条记录,旧数据每隔几周会被清除。
我正在探索在数据输入时如何进行空间分析。
大多数分析都需要找到一个点是否在特定的纬度/经度多边形内,或者哪些多边形包含该点。
我看到有以下几种解决点对多边形(PIP)问题的方法:
创建一个MySQL函数,它接受一个点和一个几何对象,并返回布尔值。 这很简单,但不确定如何使用几何对象对纬度/经度坐标执行操作,因为几何对象假设是平面而不是球体。
创建一个MySQL函数,它接受一个点和自定义数据结构的标识符,并返回布尔值。 多边形顶点可以存储在一个表中,函数可以使用球形数学计算PIP。大量的多边形点可能会导致巨大的表和慢查询。
将点数据留在MySQL中,将多边形数据存储在PostGIS中,并使用应用服务器通过提供点作为参数在PostGIS中运行PIP查询。
将应用程序从MySQL迁移到PostgreSQL/PostGIS。 这将需要大量的重写查询和过程。但是PostgreSQL在处理四亿行方面的表现如何呢? 在Google上快速搜索“MySQL 10亿行”会返回许多结果,而搜索相同的查询“Postgres 10亿行”的结果不相关。
希望听到一些想法和建议。