1

我正计划编写一个基于 Node.js 的 RESTful Web 服务,用于提供某种基于位置的功能的移动应用程序。最基本的用例看起来像这样:

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2016-01-20T20:33:50.920 回答