Scala与Earth Box中基于树的算法

时间:2014-03-13 05:17:04

标签: performance postgresql scala tree earthdistance

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

1 个答案:

答案 0 :(得分:1)

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

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

我肯定会建议首先尝试使用地球箱方法,并且只有在地球箱绝对糟糕的情况下才能使用自定义解决方案。

以下是来自a blog post you may want to check out的更简洁的元推理:

  

[...] earthbox功能允许我们执行简单的比较   查找特定半径内的所有记录。这是通过函数来​​完成的   返回点之间的大圆距离,更多   详尽的解释位于   http://en.wikipedia.org/wiki/Greatcircle

(通过元推理,我的意思是使用地球箱的简单性使得使用它变得简单。)