【问题标题】:Is Neo4J the right choice for a "get related products" query?Neo4J 是“获取相关产品”查询的正确选择吗?
【发布时间】:2014-11-25 08:53:15
【问题描述】:

我们目前正在评估将 neo4j 用作我们引擎的一部分。 遗憾的是,我们的密码查询速度慢得令人无法接受。

所以我们正在考虑从 cypher 转移到 java。 创建一个解决以下问题的java插件是否可行: 我们的 neo4j 数据库映射了以下节点类型之间的关系:

  1. 产品
  2. 标签
  3. 制造商
  4. 客户

我们neo4j DB中的每个关系都有一定的成本(例如,一个Product和Tag_1之间的连接可能比同一个Product和Tag_2之间的连接成本更低,这比Product和一个某些用户)。

我们想找到与某个来源产品最相似的 N(10?20?100?)个产品。
相似性不仅取决于两个节点之间路径的短小,还取决于源和目标之间有多少条路径。

使用 cypher 的性能极差,我们开始质疑 Neo4J 是否是解决此问题的正确工具。 此处为所有 Neo4J 专家提出的问题:
在 Java 中创建一个小型路径查找算法似乎可行,该算法也计算两个节点之间的路径数? 我们需要小于 100 毫秒(最长!)的响应时间。

我们的 neo4j 服务器现在是这样的:

  • Neo4J 版本:community-2.1.1
  • 节点:650,000
  • 产品节点:550,000
  • 属性:8,000,000
  • 关系:6,000,000
  • 关系类型:9

提前感谢您的想法。

【问题讨论】:

    标签: performance neo4j path-finding


    【解决方案1】:

    看看this extension。您可以使用 GraphAware 框架和算法扩展,或者只是查看 repo 中的代码并编写自己的非托管扩展。

    我们在 repo 中为与您有类似需求的客户编写了寻路算法 - 将查询时间从几秒缩短到毫秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2019-12-22
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多