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