Scala中基于树的算法vs Earth Box



我需要找到位于给定半径内的点。现在我有两个选择,第一是为它编写我自己的算法(或使用现有的库),第二是使用postgresql earth_box实用程序,我可以直接从db中选择它,使用存储过程。在web应用程序的上下文中,两者的优缺点是什么?

我认为在postgres中使用earth_box过程会更好,原因如下:

  • 数据库已经包含了使用它的数据和过程
  • 数据库服务器,给定一个正确索引的表,应该非常有效地对自己的空间数据执行空间查询
  • 使用服务器,不需要查询空间信息,将其传输到您正在处理它的任何地方,创建树形结构和其他开销(与第一个子弹头相连)
  • 您正在使用已经存在的代码,并且可能已经经过彻底的测试和审查
  • 您可以在其他服务器端SQL中重用来自更广泛应用程序的代码,例如报告

我绝对建议先尝试一下earthbox的方法,只有在earthbox的性能非常糟糕的情况下才使用自定义的解决方案。

下面是一篇博客文章中更简洁的元推理,你可能想看看:

[…earthbox函数允许我们执行一个简单的比较查找一定半径内的所有记录。这是由函数完成的返回点之间的大圆距离,一个多详细说明位于http://en.wikipedia.org/wiki/Greatcircle。

(通过元推理,我的意思是使用earthbox的简单性使得使用它不需要动脑筋。)

最新更新