在本文中,将学习如何使用各种建模决策来表示图数据,如何构建数据模型可能会影响查询和性能。
本文的目标是向您展示如何评估模型和进行适当的更改,以便您可以为用例定义最佳解决方案并最大程度地提高查询性能。
一、为什么图数据模型更有优势?
与任何数据库一样,设计的数据模型对于确定查询的逻辑和存储中的数据结构非常重要。Neo4j却是个例外,这种设计并不会影响图数据库,Neo4j不含架构,这意味着您的数据模型可以随业务轻松调整和更改。
是否需要开始收集新领域并进行新分析?还是需要更改客户需求或其他实体的方式并修改其定义?还是法规要求系统捕获较少的信息或限制可读性(更改数据格式/类型)?
您可能在某公司工作,在该公司中每个地区或部门对域的定义都不相同。以通用客户域为例,对于企业内的不同域,可以将客户定义为不同类型的个人,这些定义可能随着时间而改变,或者公司可能决定统一跨部门客户的含义。
如果使用其他类型的数据库,您已经熟悉这些方案所需要的开发和管理工作。但是,Neo4j允许您毫不费力地更改整个图或整个图的详细变化,无论是随时间的微小变化,还是包含有关实体的各种所需信息的广泛定义,数据库都可以处理。开发人员和架构师只需确定数据模型的结构以及如何定义查询实体。
在接下来的内容中,我们将介绍几种不同的方式来查看不同的数据集,并展示每种方式如何影响遍历图数据的查询和性能。
二、属性或者关系
建模最先遇到的决定之一是将某事物建模为节点上的属性还是与其它节点的关系。例如,以下将电影类型建模为Movie
节点上的属性。
查找特定电影类型的查询非常简单,先找到