我正在使用Google Maps API开发应用程序。目标是对某些位置进行地理编码,然后允许用户根据最接近用户的位置搜索这些位置(例如“Thing x距离您20英里”)。
在MySQL中,我可以存储地理坐标并使用hasrsine公式来进行距离计算。有人建议我考虑Postgres,因为它“更好地支持地理数据。”
所以,问题是:使用MySQL或Postgres有什么优缺点?
答案 0 :(得分:2)
PostgreSQL支持您在船上谈论的内容。但是对于更多功能(以及您提到的“某人”可能正在考虑的内容)转向 PostGIS 。
请参阅home page,documentation,或从优秀的Wikipedia开始了解概述。
请特别参阅function support matrix,了解PostGIS可以为您做些什么 计算两点之间的距离是标准功能。您可以将其用于各种数据类型。使用哪种数据类型?请参阅此question in the FAQ,并在那里进一步链接。
答案 1 :(得分:2)
如果只是积分,MySQL就没问题了。如果您有更复杂的几何图形,如传递路径或单元格接收区域等,则需要PostGIS,因为它支持更复杂的几何数据索引(r-trees)。 MyISAM实际上比空间数据BTW更好于InnoDB,因为它也支持r-tree空间索引(但不像PostGIS那样强大的查询。)如果你只需要点,InnoDB或MyISAM b-trees就足够了。如果边界框足够(即,您需要围绕某个点的矩形平面内的所有内容),那么基于geohash的索引就可以了。更多关于here的所有背景信息。熟悉PostGIS和Postgres是非常值得的,它们都是非常好的项目,到目前为止我的首选关系数据库,但只是查找点并不需要它们。
答案 2 :(得分:0)
您还可以查看MonogDB,它支持地理空间索引,让您非常有效地查询最近的对象!这就是Foursquare的人们用来寻找最近的场所......