设计考量

Neo4j-OGM 尝试在将对象持久化到图时最大限度地减少 Cypher 有效载荷。这对于两个原因很重要。首先,在客户端-服务器模式下,每次网络交互都涉及开销(带宽,但更多的是延迟),这会影响应用程序的响应时间。其次,包含冗余操作(例如更新未更改的对象)的请求是不必要的,并且会产生类似的影响。我们通过多种方式解决了这个问题

可变深度持久化

您现在可以根据要处理的图部分的特性定制您的持久化请求。这意味着您可以根据您的具体约束,通过微调要传输的数据类型和数量,选择进行更深或更浅的抓取。

如果您知道不需要某个对象的关联对象,可以通过将抓取深度指定为 0 来选择不抓取它们。或者,如果您知道总是需要一个人的完整的朋友的朋友集合,可以将深度设置为 2。

智能对象映射

Neo4j-OGM 引入了智能对象映射。这意味着在其他条件相同的情况下,可以可靠地检测数据库中哪些节点和关系需要更改,哪些不需要。

知道哪些需要更改意味着我们不需要用更新不需要更改的对象的请求,或者创建已经存在的关系的请求来淹没 Neo4j。因此,我们可以最大限度地减少跨网络发送的数据量,从而实现更快的网络交互,并减少服务器上消耗的 CPU 周期。

用户可定义会话生命周期

支持智能对象映射功能的是 Session,其生命周期可以在代码中管理。例如,与单个抓取-更新-保存周期或工作单元相关联。

长时间运行的会话的优势在于,您可以对数据库发出更高效的请求,但代价是会话相关的额外内存。短会话的优势是它们几乎不对内存造成开销,但在存储和检索数据时会导致对 Neo4j 的请求效率较低。

© . All rights reserved.