Doj*_*ojo 11 mysql gis postgresql postgis geospatial
我有4亿行分区的mysql表中的lat/lon坐标.该表每分钟增长2000条记录,旧数据每隔几周刷新一次.我正在探索如何对这些数据进行空间分析.
大多数分析需要查找某个点是否在特定的纬度/经度多边形中,或者哪个多边形包含该点.
我看到了以下解决多边形点(PIP)问题的方法:
创建一个mysql函数,它接受一个点和一个Geometry并返回一个布尔值.简单但不确定如何使用几何来执行lat/lon坐标上的操作,因为Geometry假设平面而不是球体.
创建一个mysql函数,它接受自定义数据结构的一个点和标识符并返回一个布尔值.多边形顶点可以存储在表格中,函数可以使用球形数学计算PIP.大量的多边形点可能会导致庞大的表和慢查询.
将点数据保留在mysql中并在PostGIS中存储多边形数据,并使用app服务器通过将点作为参数在PostGIS中运行PIP查询.
将应用程序从MySQL移植到Postgresql/PostGIS.这将需要花费大量精力来重写查询和过程.我仍然可以做到这一点,但Postgresql处理4亿行有多好.在Google上快速搜索"mysql 10十亿行"会返回许多结果.Postgres的相同查询不返回相关结果.
想听听一些想法和建议.
一些想法。
首先,在性能调优方面,PostgreSQL 和 MySQL 是完全不同的野兽。因此,如果您选择移植路线,请准备好重新考虑您的索引策略。PostgreSQL 不仅具有比 MySQL 更灵活的索引,而且表方法也非常不同,这意味着适当的索引策略与战术一样不同。不幸的是,这意味着您可能会遇到一些困难。如果我可以提供建议,我建议首先删除所有非关键索引,然后根据需要谨慎地将它们添加回来。
第二点是,此时这里没有人可以给您提供大量实用建议,因为我们不知道您的程序的内部结构。在 PostgreSQL 中,您最好只对您需要的内容建立索引,但是您可以对函数的输出建立索引(这在这种情况下非常有用),并且您可以仅对表的一部分建立索引。
与 MySQL 相比,我更喜欢 PostgreSQL,所以我当然认为你应该选择 PostgreSQL。然而,我不会告诉你为什么等等,让你在这种规模上挣扎,我会告诉你一些如果我试图这样做的话我会考虑使用的东西。
最后,在此卷上切换数据库将是一个学习曲线,您需要为此做好准备。然而,PostgreSQL 可以很好地处理这个卷。
| 归档时间: | 
 | 
| 查看次数: | 2201 次 | 
| 最近记录: |