我正计划编写一个基于 Node.js 的 RESTful Web 服务,用于提供某种基于位置的功能的移动应用程序。最基本的用例看起来像这样:
- 用户可以通过向包含资源名称和用户当前位置(纬度和经度)的 Web 服务发送请求来创建资源
- Web 服务将在内部将有关此资源的元数据存储在某种集合中
- 用户可以在网络服务中查询其当前位置 5 公里范围内的资源列表
我首先想到的问题之一是可扩展性。让我们假设在未来的某个时候,服务器将保存 100 万个资源的元数据。当用户查询附近的结果时,循环遍历 100 万个条目来计算距离将花费很长时间。
有许多服务具有相同的流程,所以我认为实施这样的事情不会花费我很多时间。我可能错了。
我现在有两天时间研究经过验证的方法和算法。到目前为止,我已经阅读了有关 QuadTrees、Geohases、支持空间索引的数据库、公式等的所有内容。但是,我仍然无法全面了解一切如何运作。
我希望也许从事过类似工作的人可以分享他的见解,即考虑到这个用例和我计划使用的技术,哪种方法可能是最合适的。此外,对如何实现它的简短描述将对我有很大帮助!