图建模技巧

目标
在本指南中,您将找到一些有助于为您领域设计数据模型的信息。优化模型有助于开发人员最大化系统和查询的性能。

建模技巧与诀窍

正如您在阅读建模指南或在图数据建模方面的自身经验中可能发现的,数据建模没有绝对正确或错误的方式。某些方式可能更适合您的需求,并在您优先考虑的方面表现更好,但您有多种选择。

为了找到最适合您需求的数据模型,通常通过一些技术方法并根据该分析做出数据模型决策会很有帮助。在接下来的段落中,我们将讨论一些技巧和诀窍,以帮助您决定数据模型。

先编写查询

了解您希望从数据中获取的查询类型是确定数据模型结构的好方法。如果您知道您的查询需要在特定日期范围内返回结果,那么您可能应该确保该日期不是节点上的属性,而是存储为单独的节点或关系。相比之下,对于大学课程领域,找到与当前课程相似的课程可能通过高级类别层次结构更好地工作,这使得在特定主题内搜索所有课程更加高效。

即使您还不了解确切的查询语法,理解您正在构建的系统或应用程序的意图,然后围绕业务需求构建模型,将帮助您以更准确的方式组织它。

优先处理查询

为每个查询或功能找到完美模型非常困难(如果不是不可能的话)。正如我们在建模设计指南中讨论的,选择一种特定模型而非另一种(或使用多种模型)存在权衡。虽然您可能会改进某些方面,但无法获得一劳永逸的解决方案。

相反,您应该确定哪种模型最适合您的需求。您可能无法在每个单独的查询上都达到最高性能,但您可能能够利用特定资源、时间和代码,最大限度地发挥系统的效用。

为此,您需要决定哪些查询绝对必须具有最大性能,以及哪些功能对提供价值至关重要。这可能是一个艰难的决定,但无论您使用何种技术,这些决定都将以某种形式存在。Neo4j 的更有价值之处在于,如果您的优先级随时间调整,模型是灵活且易于更改的。

进行测试

您可能会遇到在设计阶段未曾意识到的情况。找到这些情况的最佳方法之一就是实际测试模型。

加载部分数据并在系统上执行测试和查询将确定您收到的结果是否符合您的需求或预期性能。同样,Neo4j 是灵活的,因此您可以调整模型或优化查询以微调输出。

难以在一种或多种模型之间做出选择?尝试为每个模型以及它们组合起来创建一个概念验证测试,看看它们如何运行。什么很复杂?什么不值得费力?有没有一种在实际中表现更好的模型,或者多数据模型方法是否真的能给您带来最佳结果?有时,找出答案的最佳方法就是使用实时数据进行测试。

重构您的图

如上文和其他指南所述,Neo4j 始终可能进行更改。数据模型正是为此目的而设计,具有极高的灵活性和易于调整性。业务需求和优先级往往会波动。用户也可能改变其行为,导致业务发生变化。

Cypher® 允许您编写查询以对标签进行批量更新,添加或删除属性,以及将额外的节点和关系插入到结构中。还提供了一些过程来帮助批量处理查询和执行对集群实例的更新。

有关此主题的更多信息,请查看 APOC 库

其他考量

数据集的大小也会影响查询和性能。如果数据集较小,那么在更复杂的查询中,您可能不会看到太多性能影响。只有当数据量增长时,影响才会增加。这时,数据模型和查询优化对于最大化系统价值变得至关重要。

© . All rights reserved.