Mysql 存储可按距离查询的位置的最佳方法是什么?

Mysql 存储可按距离查询的位置的最佳方法是什么?,mysql,hibernate,location,Mysql,Hibernate,Location,我想实现一个功能,在这个功能中,可以按距离用户位置的距离排序显示附近场馆的列表。我现在的方法是将lat和lon值存储为浮点数,并进行查询,以查找用户位置的+/-值(搜索延伸到用户北部、南部、东部和西部的正方形)。然后,我在结果集上进行快速计算,确定距离,并在业务逻辑中进行排序。现在,我从一个主要使用关系数据库的人的角度来探讨这个问题(这个应用程序运行的是带有Hibernate的MySQL),但是有更好的方法(在不同的数据库中,如Neo4J或具有更好的列类型)吗 另外,对于0 lat或0 lon(

我想实现一个功能,在这个功能中,可以按距离用户位置的距离排序显示附近场馆的列表。我现在的方法是将lat和lon值存储为浮点数,并进行查询,以查找用户位置的+/-值(搜索延伸到用户北部、南部、东部和西部的正方形)。然后,我在结果集上进行快速计算,确定距离,并在业务逻辑中进行排序。现在,我从一个主要使用关系数据库的人的角度来探讨这个问题(这个应用程序运行的是带有Hibernate的MySQL),但是有更好的方法(在不同的数据库中,如Neo4J或具有更好的列类型)吗

另外,对于0 lat或0 lon(或接近0 lat或0 lon)的查询,我的方法有一个半复杂的解决方法


至于我对最优的工作定义,我正在寻找可扩展到10英里半径内数百个场馆和总计数十万个场馆的方法。换句话说,大约是SimpleGEO的1%,所以如果这个问题的规模不需要最优解决方案,那么“你没事”也是一个有趣的答案,尽管我很想知道原因)

MongoDB本机支持地理空间索引和查询语言的扩展,以支持多种查询地理空间文档的方法


但是,如果您正在寻找关系数据库,请尝试PostgreSQL和PostGIS。

MongoDB对地理空间索引的原生支持以及对查询语言的扩展,以支持多种不同的地理空间文档查询方式


但是,如果您正在寻找关系数据库,请尝试PostgreSQL和PostGIS。

您希望Hibernate Spatial吗

Hibernate Spatial是Hibernate的通用扩展,用于处理地理数据。和HS有MySQL提供程序


你想冬眠吗

Hibernate Spatial是Hibernate的通用扩展,用于处理地理数据。和HS有MySQL提供程序


你可以看看Lucene/Solr。至少从v2.9开始


如果您担心Lucene的复杂性,那么有一种方法可以将所有数据库更改透明地复制到Lucene。

您可以看看Lucene/Solr。至少从v2.9开始


如果你担心Lucene的复杂性,这意味着要将所有数据库更改透明地复制到Lucene。

你能提供从哪里开始的任何方向吗,或者MongoDB真的只有一个两个好的选项吗)你能提供从哪里开始的任何方向吗,或者MongoDB真的只有一个两个好的选项吗已经(也包括Hibernate搜索)。这将是一个很好的调查。谢谢实际上我已经实现了Lucene搜索(Hibernate搜索也实现了)。这将是一个很好的调查。谢谢