【问题标题】:Geodata Querying Optimisations地理数据查询优化
【发布时间】:2016-01-19 22:53:15
【问题描述】:

我正计划编写一个基于 Node.js 的 RESTful Web 服务,用于提供某种基于位置的功能的移动应用程序。最基本的用例如下所示:

  • 用户可以通过向包含资源名称和用户当前位置(纬度和经度)的 Web 服务发送请求来创建资源
  • Web 服务会将有关此资源的元数据内部存储在某种集合中
  • 用户可以在网络服务中查询其当前位置 5 公里范围内的资源列表

我首先想到的问题之一是可扩展性。让我们假设在未来的某个时候,服务器将保存 100 万个资源的元数据。当用户查询附近的结果时,循环遍历 100 万个条目来计算距离将花费很长时间。

那里有许多服务具有相同的流程,所以我认为实施这样的事情不会花费我很多时间。我可能错了。

我现在有两天时间研究经过验证的方法和算法。到目前为止,我已经阅读了有关 QuadTrees、Geohases、支持空间索引的数据库、公式等的所有内容。但是,我仍然无法全面了解一切是如何运作的。

我希望也许从事过类似工作的人可以分享他的见解,即考虑到这个用例和我计划使用的技术,哪种方法可能是最合适的。此外,简要说明如何实现它会对我有很大帮助!

【问题讨论】:

    标签: geolocation quadtree spatial-index geohashing location-based-service


    【解决方案1】:

    对于那些出于好奇而也在寻找有关此主题的更多信息的人,我的回答可能不会提供太多许可。但是,here 中的一些答案可能会帮助您了解如何使用 Geohashes 实现邻近搜索。

    在对Redis 做了一些研究之后,我的方法不会使事情过于复杂,而只是使用已经存在的工具。它具有对空间索引的开箱即用支持,并且很可能会满足我对该项目的所有持久性要求。

    显然MongoDB 还内置了对地理数据的支持。事实上,即使是像 MySQL 或 SQLite 这样的 RDBMS 也确实具备这样的功能。

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2019-03-30
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多