【问题标题】:Google App Engine NDB Query on Many Locations许多位置的 Google App Engine NDB 查询
【发布时间】:2014-06-30 19:09:16
【问题描述】:

我正在开发基于 Google App Engine 的网络应用程序。 它在数据存储中存储了数百个地点(名称、纬度、经度)。 我的目标是在谷歌地图上展示它们。 由于它们很多,我已经在地图的空闲事件中注册了一个 javascript 函数,并且在执行时,它会将地图边界(minLat、maxLat、minLng、maxLng)发布到一个请求处理程序,该处理程序应该只从数据存储中检索这些地方在指定的边界内。

问题是它不允许我在查询中执行多个不等式(即 Place.latminLat、Place.lntminLng)。

我该怎么做? (也尽量减少所需查询的数量)

【问题讨论】:

标签: javascript python google-maps google-app-engine


【解决方案1】:

您可以将地图划分为区域,制定算法将当前位置转换为区域,然后通过相等查询获取地点。在这种情况下,您需要重叠区域,允许地点成为其中的一部分,并且理想情况下使区域大于地图的大小,以最大限度地减少对多个查询的需求。

这只是想法的大纲,实际实现会稍微复杂一些,但我手头没有。

另一种选择是使用 geohashes,它实际上非常酷,您可以在此处阅读有关它们的文章以及代码示例:Scalable, fast, accurate geo apps using Google App Engine + geohash + faultline correction

【讨论】:

    【解决方案2】:

    您没有说数据点的更新频率,但假设 1)它们不经常更新,并且 2)只有数百个点,然后考虑只查询它们一次,并将它们排序存储在内存缓存中。然后你的处理函数就会从内存缓存中获取并在内存中过滤。

    这不会无限扩展,但由于 App Engine 定价的运作方式,它可能会比每次查询数据存储更便宜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-27
      • 2013-01-07
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多