【问题标题】:Neo4J dynamic data modelNeo4J 动态数据模型
【发布时间】:2020-04-07 12:48:37
【问题描述】:

图形和图形建模领域的新手提醒。 将 Neo4J 用作原生图形数据库。

我正在开发一个用于开发通用(与领域无关)产品的用例。可以是“人”,也可以是“动物”,也可以是“汽车”等等。

我不想每次都为新域建模(并编码转换)。这使得产品有点死板。

我的想法是通过将 Node 建模为“节点”和将 Connection 建模为“连接”,其中包含一大堆属性来区分和在密码查询中使用它们,从而获得一个通用的图形模型。

这让我觉得它稀释了图形数据建模,但提供了极大的灵活性。这是这里的权衡吗?有什么建议吗?

这种方法是否对性能有任何影响,因为我在一些地方读到,总是对特定关系建模比将它们建模为具有不同属性的单个关系要好得多。这是一个正确的说法吗?当然,我最不想将整个网络(数百万)首先加载到 neo4j 内存中,然后让 neo4j 根据属性对其进行过滤。还是通过索引属性更智能?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    整个 neo4j 生态系统围绕多个节点标签和多个关系类型进行设计和高度优化。

    举个例子:服务器会统计每个标签的实例数量,并使用这些知识来优化一些 Cypher 操作。如果您决定为所有节点使用一个标签(或者,甚至决定根本不使用任何标签),这有时会导致 Cypher Planner 创建一个非常低效的计划。

    当然,与所有系统一样,neo4j 也有一些可以改进的地方。但我建议您先获得更多使用 neo4j 的经验,然后再断言按预期使用它的方式“有点死板”。您可能会感到惊喜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2021-01-29
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多