指纹识别

以下函数计算节点、关系或整个图的哈希校验和。它会考虑所有属性、节点标签和关系类型。

APOC 版本之间,用于哈希的算法可能会发生变化。因此,只能比较同一图中的两个实体/图,或使用相同 APOC 版本的不同图的哈希结果。

图的哈希校验和首先计算每个节点的哈希校验和。生成的哈希校验和列表是有序的,并且对于每个节点,会添加所有关系及其末端节点的哈希校验和。内部 ID 不包含在哈希校验和中。

也可以提供一个应在所有节点上忽略的 propertyKeys 列表。这在存储应忽略的属性(例如 created=timestamp())时会很有用。

函数名称 描述

apoc.hashing.fingerprint(object ANY, excludedPropertyKeys LIST<STRING>)

计算 NODERELATIONSHIP 的 MD5 校验和(相同实体共享相同的校验和)。不适用于加密用例。

apoc.hashing.fingerprinting(object ANY, config MAP<STRING, ANY>)

计算 NODERELATIONSHIP 的 MD5 校验和(相同实体共享相同的校验和)。与 apoc.hashing.fingerprint() 不同,此函数支持多种配置参数。不适用于加密用例。

apoc.hashing.fingerprintGraph(propertyExcludes LIST<STRING>)

计算整个图的 MD5 校验和。此函数使用内存数据结构。不适用于加密用例。

配置参数

表 1. apoc.hashing.fingerprinting 配置参数
名称 类型 默认值 描述

digestAlgorithm

STRING

"MD5"

用于计算指纹的算法。支持的值为:MD5SHA-1SHA-256

strategy

STRING

"LAZY"

定义节点/关系过滤行为。支持的值为

  • LAZY - 不包括属性。

  • EAGER - 包括所有未过滤的属性。

nodeAllowMap

MAP<STRING, LIST<STRING>>

{}

节点标签名称映射到该标签允许的属性列表。

nodeDisallowMap

MAP<STRING, LIST<STRING>>

[]

节点标签名称映射到该标签应忽略的属性列表。

relAllowMap

MAP<STRING, LIST<STRING>>

{}

关系类型名称映射到该类型允许的属性列表。

relDisallowMap

MAP<STRING, LIST<STRING>>

[]

关系类型名称映射到该类型应忽略的属性列表。

mapAllowList

LIST<STRING>

[]

当被哈希的对象是映射时,允许的键列表。

mapDisallowList

LIST<STRING>

[]

当被哈希的对象是映射时,应忽略的键列表。

allNodesAllowList

LIST<STRING>

[]

全局允许的节点属性列表

allNodesDisallowList

LIST<STRING>

[]

全局忽略的节点属性列表。

allRelsAllowList

LIST<STRING>

[]

全局允许的关系属性列表。

allRelsDisallowList

LIST<STRING>

[]

全局忽略的关系属性列表。

不可能为同一实体类型同时定义允许和不允许列表。因此,在为节点、关系和映射设置指纹识别参数时,列表必须是允许或不允许的。

指纹识别策略

如果配置中定义的属性不存在于节点和/或关系上,则可以定义指纹识别过程如何进行

  • EAGER:如果未提供允许/不允许列表,则在哈希中包含所有属性。

  • LAZY:如果未提供允许/不允许列表,则在哈希中排除所有属性。

© . All rights reserved.