cluster-computing - Neo4j 和聚类分析

标签 cluster-computing neo4j cluster-analysis graph-databases

我正在开发一个 Web 应用程序,该应用程序在很大程度上取决于其根据具有相似偏好的用户对项目提出建议的能力。我的一个 friend 告诉我,我正在寻找的 - 在数学上 - 是一些聚类分析算法。另一方面,在 SO 上,我被告知 Neo4j(或其他一些 Graph DB)是我应该为这个任务(首选项)接近的那种数据库。

我开始研究这两种工具,但我有一些疑问。 出于聚类分析的目的,在我看来,标准 SQL DB 仍然是完美的选择,而 Neo4j 更适合神经网络类型的方法(尽管仍然非常适合该任务)。

我错过了什么吗?我是否尝试使用错误的工具组合?

我很想听听关于这个主题的一些想法。

谢谢分享

最佳答案

这取决于您的数据。 neo4j 能够为一个特定节点实时提供甚至复杂的推荐——假设您想向用户推荐一些产品,这可以在图形数据库中实时处理

而使用某些聚类系统是同时为所有用户提供建议的最佳方式(而不是将其保存在某个地方,这样您就不需要再次计算它)。

计算差异:

  • neo4j 没有初始化成本,可以在可接受的时间内给你一个建议
  • 聚类需要更多时间进行初始化(例如,不是几秒钟,但很可能是几分钟/几小时),并且更好地计算整个数据集的建议。事实上,严格地为特定用户进行一次计算,这种聚类可以比 neo4j 更快地完成,但最大的限制是初始初始化 - 因此不利于实时应用

实际区别:

  • 如果您的数据主要是静态数据,并且与使用 SQL 进行集群相比,您可以一次执行一次建议

  • 如果您获得动态数据,其中数据会随着每次交互而更新,并且对于您始终提供最新推荐是必要的,那么使用 neo4j

关于cluster-computing - Neo4j 和聚类分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387899/

相关文章:

Python IPC 一对多

postgresql - 如何在Docker中部署Keycloak HA集群

azure - 在 Azure 中以 HA 模式部署 Keycloak

neo4j:发现数据结构

elasticsearch - Elasticsearch:使用两个节点设置集群

r - 圆形系统发育树上的节点标签

python - 并行 python 还是 MPI?

mysql - 如何在单个 spring-boot 应用程序中使用 MySQL 和 neo4j

neo4j - 返回Cypher中具有相同属性B的节点的属性A之和

cluster-analysis - 集群合并阈值