通过经纬度计算距离实现附近、附近的人等功能

需求:附近功能在很多生活类的App或软件中经常出现?那他们是怎么实现的呢?如果数据量不是很大,且功能比较简单,基于MySQL就可以实现。然而很多时候数据量很大且功能复杂,那么我们就需要使用Elasticsearch这种数据库了,不仅功能丰富,而且性能强大,大数据量情况下性能不再是问题。

一、基于MySQL实现(8.0.28)
1、建表

2、插入测试数据

纬度最大是90度,大于90度的一定是经度。
百度地图上的坐标拾取。精度在前,和经纬度的字面意思一致地球平均半径约:6371km   最大半径(赤道半径)约:6378km

二、通过Elasticsearch(7.15.1)的geo_point实现
1、创建索引mapping

2、插入测试数据

后记:很多数据库都有对GEO地理位置数据的处理,除了文中说到的MySQL、Elasticsearch;还有Redis、MongoDB等。
总结:
1、MySQL实现简单,MySQL数据库大部分初级程序员都已掌握,实现简单且可以返回原点距离目标点的距离。开发简单,一句sql搞定。但缺点也很明显,只适用于数据量少且业务简单的场景。
2、Elasticsearch的优点是,适用于大数据量情况,对非常复杂的业务也可以得心应手的处理。缺点是对开发人员技术栈要求比较高,需要掌握Elasticsearch。

Original: https://www.cnblogs.com/hbuuid/p/15840938.html
Author: 下午喝什么茶
Title: 通过经纬度计算距离实现附近、附近的人等功能

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/565733/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球