教程目录 引自:https://neo4j.com/docs/getting-started/data-modeling/modeling-tips/
图数据建模技巧
目标
在本指南中,您将找到一些有助于为您的领域设计数据模型的实用信息。优化模型可以帮助开发人员最大化系统和查询的性能。
建模技巧和方法
正如您在阅读建模指南或自己进行图数据建模时可能发现的那样,没有绝对正确或错误的建模方式。一些方式可能更适合您的需求,并在您优先考虑的方面表现更好,但您有多种选择。
为了找到最适合您需求的数据模型,通常可以采用一些技术并根据分析结果做出数据模型决策。接下来的段落中,我们将讨论一些建模技巧和方法,帮助您选择适合的数据模型。
1. 先编写查询
了解您希望从数据中提出的问题和查询类型,是确定数据模型结构的绝佳方法。如果您知道查询需要在特定日期范围内返回结果,那么您可能需要确保日期不是节点上的属性,而是存储为单独的节点或关系。相比之下,对于大学课程领域,寻找与当前课程类似的课程可能更适合使用高层次的类别层次结构,这样可以更高效地搜索主题内的所有课程。
即使您尚未确定确切的查询语法,理解您正在构建的系统或应用程序的意图,并围绕业务需求构建模型,将帮助您以更准确的方式组织数据。
2. 优先考虑查询
找到适合每个查询或功能的完美模型是非常困难的(甚至是不可能的)。正如我们在建模设计指南中讨论的那样,选择一种特定模型而不是另一种(或使用多种模型)会有权衡。虽然您可能会改善某些方面,但无法获得适合所有情况的解决方案。
相反,您应该确定哪个模型最适合您的需求。您可能无法在每个单独查询上都达到性能最大化,但您可以通过某些资源、时间和代码从系统中获得最大收益。
为此,您需要决定哪些查询必须绝对具有最高性能,以及哪些功能对于提供价值至关重要。这可能是一个艰难的决定,但无论您使用哪种技术,这些决策都会以某种形式存在。Neo4j 的优势在于其模型灵活性,可以随着优先级的变化进行调整。
3. 测试模型
在设计阶段,您可能会遇到未意识到的场景。找到这些场景的最佳方法之一是实际测试模型。
加载部分数据并在系统上执行测试和查询,可以确定您收到的结果是否符合您的需求或预期性能。同样,Neo4j 的灵活性使您可以调整模型或优化查询以微调输出。
在多个模型之间难以决定?尝试为每个模型创建概念验证测试,并同时测试它们的运行情况。哪些模型复杂或不值得麻烦?是否有一个模型在实际运行中表现更好,或者多数据模型方法是否真正提供了最佳结果?有时,找到答案的最佳方法是使用实时数据进行测试。
4. 重构图模型
如上所述以及其他指南中提到的,使用 Neo4j 时始终可以进行更改。数据模型设计为灵活且易于调整,正是出于这个原因。业务需求和优先级往往会波动。用户行为也可能发生变化,从而导致业务的转变。
Cypher® 允许您编写查询以对标签进行批量更新、添加或删除属性,以及向结构中插入额外的节点和关系。此外,还有一些程序可以帮助批量查询和更新集群实例。
有关此主题的更多信息,请查看 APOC 库!
其他注意事项
数据集的大小也会影响查询和性能。如果您的数据集较小,那么在执行更复杂的查询时可能不会看到太大的性能影响。只有当数据量增长时,您才可能看到影响增加。这时,数据模型和查询优化对于最大化系统价值变得至关重要。