Rya*_*ley 16 mysql postgresql feature-comparison spatial postgis
我们正在构建具有空间数据组件的 Web 应用程序。开始时,我们的空间数据比较将采用给定点并返回匹配的重叠空间多边形。
话虽如此,我们的数据库还有许多其他组件,其中包括您在一般关系数据库中会发现的所有典型内容。
在我们的项目中,我们必须选择要使用的数据库解决方案。
所有项目成员都更熟悉 MySQL 的实现和管理,但所有研究都表明 PostgreSQL 是更好的解决方案 - 特别是在使用 postGIS 的空间数据方面。
我们期望(希望)我们的应用程序将体验大量并发用户的大量操作。
有使用 MySQL 作为空间数据组件的 RDBMS 的经验的任何人有任何长期的建议/经验吗?
除了熟悉之外,使用 PostGIS 是否有任何缺点?
vor*_*aq7 11
我无法谈论与 MySQL 相比的优势/劣势,但 PostGIS 代码被广泛认为是最好的(在速度/功能方面)和最成熟的(在测试/实际暴露方面)之一) 可用的。
例如,在 PGEast 2010 上,FAA 的一些人谈到了他们将机场数据库(由 AeroNav 和其他人用来编译图表)从 Oracle 转换为 Postgres/PostGIS 的演讲。
该avationDB网站也是建立在Postgres的(8.0)的顶部。
如果与 GIS 相关的查询是您所做工作的核心,我的建议是使用 Postgres。它当然也可以处理您通常在关系数据库中执行的所有其他操作。
在从 MySQL 进行切换方面,Postgres 背后的文档是一流的,并且 Oostgres Wiki 中还有一部分关于从 MySQL 切换到 Postgres。
最初的学习曲线可能有点陡峭,您可能需要调整您的数据库和任何存储过程(如果您已经为 MySQL 编写了它们),但这并不是一项不可逾越的任务。
您应该能够在几周内掌握足够的知识以进行转换,如果您建立了开发数据库,您可能会在一个月内精通日常任务,并确信您知道在哪里查看手册对于不那么常规的人。
说到一些非常重要的事情。以下是 MySQL 和 MariaDB 中完全不存在的 PostGIS 支持的内容列表。
K 最近邻:只有 PostGIS 支持 KNN。仅使用索引即可找到任何点的最近点:无需计算与所有点的距离!MySQL 违反规范,只检查两个值是否具有相同的 SRID。PostGIS 带有pro4j 定义的数据库,以实现无缝的 SRID 感知。设置 SRID 并调用ST_Transform
(MySQL 缺少的函数)将重新投影您的坐标。
在 MySQL 中,所有计算都假设 SRID 为 0,而不管实际的 SRID 值如何。SRID 0 表示无限平面笛卡尔平面,其轴没有指定单位。将来,计算可能会使用指定的 SRID 值。为确保 SRID 0 行为,请使用 SRID 0 创建几何值。如果未指定 SRID,则 SRID 0 是新几何值的默认值。
栅格:从栅格生成到提取,这里有大量的特征。您可以生成热图等。
Geography,PostGIS 支持完全不使用笛卡尔数学的未投影地理类型。它有一系列在扁球体上运行的相关函数。相反,MySQL 甚至无法从两点在地理 SRS 中创建边界框。
拓扑与矢量几何不同,拓扑几何存储节点和关系。移动一个节点,边缘也会移动,你会得到一张新面孔。这也迫使边缘被定向,这使它们成为路由的理想选择。作为一个子点,PgRouting所做的100%对 MySQL 是不可用的——所以你不能在它上面创建一个谷歌地图或类似的东西。
地理编码:在 contrib 目录中有地理编码器扩展,可以处理人口普查数据,还有一个加载器来安装该数据。
地址标准化:有一个扩展可以处理标准化地址,以便于解析、存储和比较。
SQL-MM功能,你根本不会找到CIRCULARSTRING
COMPOUNDCURVE
CURVEPOLYGON
MULTICURVE
或MULTISURFACE
在MySQL。
nd 线:PostGIS 可以支持 3dm、3dz 和 4d 形状和点,而 MySQL根本无法支持
MySQL 仅支持 r-tree 索引。PostGIS 支持 r-tree (gist/gin) 和 BRIN(用于大型几何表)
聚合函数:据我所知 MySQL 不提供空间聚合函数
K 最近邻:只有PostGIS 支持 KNN。仅使用索引即可找到与任何点最近的点:无需计算与所有点的距离!
索引。PostgreSQL 允许您在空间索引(这是一个 gist/gin 索引)上存储任何数据。例如,您可以将 the year
(或其他非空间数据)和 the 存储geom
在同一索引上。有关如何执行此操作的更多信息,请参阅btree_gin
和btree_gist
。
简而言之,MySQL 与 PostGIS 无关,它知道这一点。PostGIS 是一头野兽。只是想解释一些这些东西。
归档时间: |
|
查看次数: |
11014 次 |
最近记录: |