gpt4 book ai didi

php - 使用 Graph DB 通过 PHP 存储位置之间的距离

转载 作者:可可西里 更新时间:2023-10-31 22:45:36 24 4
gpt4 key购买 nike

我需要能够快速找到给定目的地的 n 个最近的目的地,计算 n 个目的地的 n x n 距离矩阵以及与两个或多个目的地之间的距离相关的其他几个此类操作。

我了解到,与 MySQL 数据库相比,图形数据库的性能要好得多。我的应用程序是用 PHP 编写的。

所以我的问题是 - 是否可以将 Graph DB 与 PHP 应用程序一起使用,如果可以,那么哪个是最佳选择和开源以及如何将此数据存储在 Graph DB 中以及如何访问它。

提前致谢。

最佳答案

Neo4j是一个非常可靠的图形数据库,并且还具有灵活的(如果有点复杂的话)许可。它实现了 Blueprints API,并且应该很容易从几乎任何语言(包括 PHP)使用。它还有一个 REST API也,它尽可能灵活,至少有one good example从 PHP 中使用它。

根据您拥有的数据,有多种存储方式。

如果你有“路线”数据,其中你的点已经通过特定路径相互连接(即你不能从一个点直接跳到另一个点),那么你只需让每个点成为一个节点和连接 route 的点之间是节点之间的边,距离是这些边的属性。这会给你一个看起来像经典的“旅行推销员”问题的图表,计算节点之间的距离只是进行加权广度优先搜索的问题(假设你想要最短路径)。

如果您可以使用您的数据集从一个地方跳到另一个地方,那么您就有了一个fully connected图形。显然,这是大量数据,并且随着您添加更多目的地而呈二次方增长,但是图形数据库可能比关系数据库更擅长处理这个问题。为了存储距离,当您向图形添加节点时,您还向每个现有节点添加一条边,并将距离预先计算为它的属性之一。然后,要检索一对节点之间的距离,您只需找到它们之间的边并获取它的距离属性即可。

但是,如果您有大量 个完全连接的节点,您可能最好只存储这些节点的坐标并根据需要计算距离,并可选择缓存结果加快速度。

最后,如果您使用蓝图 API 和该堆栈中的其他工具,例如 GremlinRexter ,您应该能够换入/换出 任何 兼容的图形数据库,这让您可以使用可能更好地满足您需求的不同实现,例如使用 TitanCassandra 之上/Hadoop集群。

关于php - 使用 Graph DB 通过 PHP 存储位置之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com