使用 Schema Registry

Neo4j 是一个无模式数据库,当需要将消息转换为 Avro、Protobuf 或 JSON Schema 等模式格式以通过 Kafka 传输时,会带来挑战。由于图数据的灵活性,可能会出现模式冲突。为了缓解冲突,建立结构化的模式强制执行和验证方法至关重要。

强制结构

在使用 Avro、Protobuf 或 JSON Schema 等模式格式与 Neo4j 配合时,建议投入精力强制数据内部结构。这包括:

  • 导出属性的类型一致性:确保源连接器导出的属性在标签内的所有节点和类型内的所有关系中都具有相同的类型。

  • 类型和存在约束:利用 Neo4j Enterprise 和 AuraDB 中提供的类型和存在约束。更多详情请参阅Cypher 手册

演变图结构

在演变图数据结构时,必须提前规划,考虑 Schema Registry 兼容模式。例如,在默认兼容模式 (BACKWARD) 下,添加新属性通常是安全的。然而,删除或类型更改应谨慎处理,因为它们可能引入模式版本之间的冲突。

根据具体要求和数据结构,可能需要更改兼容模式,甚至更改为 NONE。但是,在实施兼容性更改之前进行彻底测试非常重要。

处理非结构化图数据

在图数据难以结构化或演变的场景中,建议探索是否可以放宽兼容模式并在消费者端管理模式更改。如果不可行,建议采用无模式消息格式。但是,在使用无模式消息格式时,您将失去基于模式的类型转换支持。

© . All rights reserved.