用于存储位置数据(经纬度)和搜索的 postgresql 或 Mongodb?
Posted
技术标签:
【中文标题】用于存储位置数据(经纬度)和搜索的 postgresql 或 Mongodb?【英文标题】:postgresql or Mongodb for storing location data (lat & long) and search based on? 【发布时间】:2018-07-04 18:38:47 【问题描述】:我有一个系统,我喜欢根据纬度和经度数据找到离一个人最近的人。 我知道如何在 Mongodb 中使用位置数据,以及如何通过半径等为每个人找到最近的人。 但是我不知道如果我的系统中有大量用户,并且在 postgresql 中查询位置数据可能会使我的系统崩溃? 哪个 dbms 非常适合处理位置数据、Postgresql 或 Mongodb ??? 感谢您的帮助。
非常感谢
【问题讨论】:
【参考方案1】:您所说的查询类型称为“KNN”或“K-nearest-neighbor”,PostgreSQL 直接使用 GIST 索引支持。更好的是,PostGIS 支持真正的 KNN,用于对纬度/经度(又名地理空间)数据进行 KNN。这是一个关于在 PostGIS 中使用 KNN 和 PostGIS 的精彩演示:
https://www.hagander.net/talks/Find%20your%20neighbours.pdf
您可以在此处阅读有关 PostGIS 中 KNN 功能的更多信息:
https://postgis.net/docs/geometry_distance_knn.html
我不会谈论哪个数据库更适合您的特定工作负载,因为我不直接知道它,而且无论如何我都会有点偏见,正如您可能会根据上面的链接猜到的那样。我要说的是,PostgreSQL 在执行这类查询方面非常高效且非常快速,并且可以很好地扩展。
【讨论】:
非常感谢您的指导。以上是关于用于存储位置数据(经纬度)和搜索的 postgresql 或 Mongodb?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot JPA 在 Postgres 中存储几何点?