Performance Scala vs Earth Box中基于树的算法

Performance Scala vs Earth Box中基于树的算法,performance,postgresql,scala,tree,earthdistance,Performance,Postgresql,Scala,Tree,Earthdistance,我需要找到位于给定半径内的点。现在我有两个选择,第一个是为它编写自己的算法(或使用现有库),第二个是使用postgresql earth__box实用程序,我可以使用存储过程直接从数据库中选择它。在web应用程序环境中,两者的优缺点是什么?我认为在postgres中使用earth\u box程序会更好,原因如下: 数据库已经包含使用它的数据和过程 给定一个正确索引的表,数据库服务器在对自己的空间数据执行空间查询时应该非常高效 使用服务器,无需查询空间信息,将其传输到处理它的任何位置,创建树结构

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

我认为在postgres中使用earth\u box程序会更好,原因如下:

  • 数据库已经包含使用它的数据和过程
  • 给定一个正确索引的表,数据库服务器在对自己的空间数据执行空间查询时应该非常高效
  • 使用服务器,无需查询空间信息,将其传输到处理它的任何位置,创建树结构和其他开销(连接到第一个项目符号)
  • 您使用的代码已经存在,并且可能已经过彻底的测试和审查
  • 您可以从更多的应用程序(如报表)中重用其他服务器端SQL中的代码
我肯定会建议首先尝试接地盒方法,只有在接地盒的性能绝对糟糕的情况下才使用自定义解决方案

下面是一个更简洁的元推理:

[…]接地盒功能允许我们执行简单的比较 查找某个半径内的所有记录。这是由函数by完成的 返回点之间的大圆距离,更 详细的解释位于


(所谓元推理,我的意思是,使用earthbox的简单性使使用它变得简单。)

感谢您的贡献,我对使用earthbox有点经验,并且觉得它简单易行。现在我想知道scala运行时计算的优势。@slowarry:Ha。我也很好奇。我在谷歌搜索中没有发现正面比较。如果你真的想知道,你可能得自己写。这里有一个Java函数(我没有找到Scala源代码),它实现了GreatCircle算法,你可能想切掉它:顺便说一句,如果你提到你已经知道earth_box并对性能指标感兴趣,我就不会费心去试着回答这个问题了。这只是一个距离基本函数,但任务更复杂,有很多点和蛮力,所有这些都太慢了,最有趣的是应用图形来更快地找到它,应该应用这个实现,并将其与earth_box进行比较。当程序员选择数据库时,这种比较也很有用,例如,如果数据库相当好,他们可以使用MySQL、Redis或Mongodb,如果真的很糟糕,他们可以说:“好吧,prostgresql非常适合这个”@slowarry:听起来你已经得到了答案。:-)