地理信息系统:PostGIS/PostgreSQL vs.MySql vs.SQL Server?

地理信息系统:PostGIS/PostgreSQL vs.MySql vs.SQL Server?,mysql,postgresql,gis,geocoding,postgis,Mysql,Postgresql,Gis,Geocoding,Postgis,编辑:我已经在PostGIS上使用Postgres几个月了,我很满意。 我需要分析几百万条地理编码记录,每一条记录都有纬度和经度。这些记录包括至少三种不同类型的数据,我将尝试看看每一组数据是否会相互影响 对于所有这些数据,哪个数据库最适合底层数据存储?以下是我的愿望: 我对数据库管理系统很熟悉。我对PostgreSQL最弱,但如果其他方面都符合要求,我愿意学习 它可以很好地处理GIS查询。谷歌搜索表明PostgreSQL+PostGIS可能是最强的?至少很多产品似乎都在使用它。MySql的空间

编辑:我已经在PostGIS上使用Postgres几个月了,我很满意。

我需要分析几百万条地理编码记录,每一条记录都有纬度和经度。这些记录包括至少三种不同类型的数据,我将尝试看看每一组数据是否会相互影响

对于所有这些数据,哪个数据库最适合底层数据存储?以下是我的愿望:

  • 我对数据库管理系统很熟悉。我对PostgreSQL最弱,但如果其他方面都符合要求,我愿意学习
  • 它可以很好地处理GIS查询。谷歌搜索表明PostgreSQL+PostGIS可能是最强的?至少很多产品似乎都在使用它。MySql的空间扩展似乎相对最小
  • 低成本。尽管SQL Server Express 2008 R2中有10GB的数据库限制,但我不确定我是否愿意接受免费版本的这一限制和其他限制
  • 与Microsoft.NET Framework没有对立。多亏了Connector/NET 6.3.4,MySql在C#和.NET Framework 4程序中运行良好。它完全支持.NET4的实体框架。我找不到任何非商业性的PostgreSQL等价物,尽管我不反对为Devart的PostgreSQL专业版dotConnect支付180美元
  • 与R兼容。似乎所有这三个都可以使用ODBC与R通信,因此可能不是问题

我已经使用MySql进行了一些开发,但如果需要,我可以进行更改。

PostGis。原因如下

  • Postgres在性能上远远优于MySQL。服务器更具容错性,具有用于负载平衡、缓存和优化的现成工具
  • PostGIS正在成为GIS应用程序的标准
  • 它是免费的

  • 如果您对全面的比较感兴趣,我推荐和/或波士顿地理信息系统

    考虑到你的观点:

    • 我熟悉数据库管理系统:在Windows上设置PostGIS数据库很容易,使用PgAdmin3管理也很简单
    • <> LIS>强> GIS查询: PASGIS绝对是三的最强,只有Oracle空间是可比的,但如果考虑其成本则被取消资格。
    • 低成本:+1用于PostGIS
    • 与Microsoft.NET Framework不对抗:您至少应该能够通过ODBC()进行连接
    • 与R兼容:这三个选项中的任何一个都不会有问题

    请注意,MySQL最终添加了正确的GIS逻辑


    但我不能在现阶段评论成本或性能

    PostGIS是最好的,因为现在它正在成为GIS应用程序的标准,而且PostGIS是免费的。它在性能上远远优于MySQL

    我已经使用了所有三个数据库并在它们之间进行了迁移,所以希望我仍然可以在一篇旧文章中添加一些内容。十年前,我的任务是将一个更大的数据集(4.5亿个空间对象)从GML放到一个空间数据库中。我决定尝试MySQL和Postgis,当时SQL Server中没有spatial,我们有一个小的启动环境,所以MySQL看起来很适合。后来我参与了MySQL,参加了几次会议,并在会议上发言。我还参与了MySQL中更符合GIS的功能的beta测试,最终发布了5.5版。我随后参与了将我们的空间数据迁移到Postgis和将我们的公司数据(带有空间元素)迁移到SQL Server的工作。这些是我的发现

    MySQL

    1) 。稳定问题。在5年的时间里,我们遇到了几个数据库损坏问题,只有在索引文件上运行myismachk才能解决这些问题,在一个4.5亿行的表上,这个过程可能需要24小时以上

    2) 。直到最近,只有MyISAM表支持空间数据类型。这意味着,如果您需要事务支持,那么您就不走运了。InnoDB表类型现在确实支持空间类型,但不支持空间类型上的索引,鉴于空间数据集的典型大小,这并不是非常有用。我参加会议的经验是,spatial完全是事后才想到的——我们已经实现了复制、分区等,但它不适用于spatial。 编辑:InnoDB将最终支持空间列上的索引,这意味着ACID、外键和空间索引最终将在同一个引擎中可用

    3) 。与Postgis和SQL Server spatial相比,空间功能极其有限。仍然没有作用于整个几何体字段的ST_Union函数,这是我最常运行的查询之一,即,您不能编写:

    select attribute, ST_Union(geom) from some_table group by some_attribute
    
    这在GIS环境中非常有用<代码>从一些表格中选择ST_Union(geom1,const_geom),即其中一个几何图形是硬编码的常量几何图形相比之下有点限制

    4) 。不支持光栅。能够在数据库中进行组合矢量光栅分析是非常有用的GIS功能

    5) 。不支持从一个空间参照系统转换到另一个空间参照系统

    6) 。自从被甲骨文收购后,spatial就真的被搁置了

    总的来说,公平地说,MySQL支持我们的网站、WMS和通用空间处理已经有好几年了,而且很容易设置。另一方面,数据损坏是一个问题,由于被迫使用MyISAM表,您放弃了RDBMS的许多好处

    波斯特吉斯

    考虑到MySQL的问题,我们最终转换为Postgis。这一经验的要点是:

    1) 。极度稳定。5年内没有数据损坏,centos虚拟机上现在有大约25个Postgres/GIS箱,负载程度不同

    2) 。快速发展——光栅、拓扑、3D支持是最新的