Kafka 源连接器:有效负载模式配置
Neo4j 的 Kafka 源连接器支持两种有效负载模式来控制序列化并发布到 Kafka 主题的数据格式:EXTENDED
和 COMPACT
。此功能可通过 neo4j.payload-mode
属性进行配置,允许用户根据数据需求选择首选的序列化格式。
有效负载模式
neo4j.payload-mode
配置提供以下选项
-
EXTENDED
(默认):为每个属性提供详细的结构,支持模式兼容性和一致性。此格式在存在模式更改(例如属性类型更改)或时间类型的情况下特别有用,确保跨更改的数据一致性。 -
COMPACT
:生成仅包含基本字段的更简单的格式。此格式更轻量级,在不需要模式兼容性或复杂数据类型时可能更可取。
|
示例数据格式
以下示例显示了如何在每种有效负载模式下发布数据。
COMPACT
模式示例
COMPACT
模式生成一个最小的有效负载,其中仅包含基本字段
{
"name": "mary",
"surname": "doe",
"timestamp": 1729779296311
}
此模式在性能和简单性是优先级时很有用,并且适用于模式演变和时间一致性不是主要关注点的场景。
EXTENDED
模式示例
EXTENDED
模式包括其他结构和元数据以支持复杂类型和模式一致性,防止属性类型随时间变化时出现问题
{
"name": {
"type": "S",
"B": null,
"I64": null,
"F64": null,
"S": "mary",
"BA": null,
"TLD": null,
"TLDT": null,
"TLT": null,
"TZDT": null,
"TOT": null,
"TD": null,
"SP": null,
"LB": null,
"LI64": null,
"LF64": null,
"LS": null,
"LTLD": null,
"LTLDT": null,
"LTLT": null,
"LZDT": null,
"LTOT": null,
"LTD": null,
"LSP": null
},
"surname": {
"type": "S",
"B": null,
"I64": null,
"F64": null,
"S": "doe",
"BA": null,
"TLD": null,
"TLDT": null,
"TLT": null,
"TZDT": null,
"TOT": null,
"TD": null,
"SP": null,
"LB": null,
"LI64": null,
"LF64": null,
"LS": null,
"LTLD": null,
"LTLDT": null,
"LTLT": null,
"LZDT": null,
"LTOT": null,
"LTD": null,
"LSP": null
},
"timestamp": {
"type": "I64",
"B": null,
"I64": 1729779365447,
"F64": null,
"S": null,
"BA": null,
"TLD": null,
"TLDT": null,
"TLT": null,
"TZDT": null,
"TOT": null,
"TD": null,
"SP": null,
"LB": null,
"LI64": null,
"LF64": null,
"LS": null,
"LTLD": null,
"LTLDT": null,
"LTLT": null,
"LZDT": null,
"LTOT": null,
"LTD": null,
"LSP": null
}
}
此模式对于具有复杂模式要求的数据特别有益,因为它即使属性类型在 Neo4j 端发生更改也能确保兼容性。
了解 EXTENDED
有效负载结构
在 EXTENDED
模式下,每个属性都包含每个受支持的 Neo4j 类型的字段。只有与实际属性类型对应的字段将包含非空值,而所有其他字段都设置为 null。此结构确保属性类型的任何更改都不会在源连接器或接收器连接器处导致模式执行错误。
字段 | 描述 |
---|---|
类型 |
指示属性的类型。可能的值包括: |
B |
布尔类型(true 或 false) |
I64 |
64 位整数 |
F64 |
64 位浮点数 |
S |
字符串 |
BA |
字节数组 |
TLD |
时间本地日期 |
TLDT |
时间本地日期时间 |
TLT |
时间本地时间 |
TZDT |
时间时区日期时间 |
TOT |
时间偏移时间 |
TD |
时间持续时间 |
SP |
空间点 |
LB、LI64、LF64、LS、LTLD 等 |
每个对应类型的列表 |
例如,字符串字段将表示为
{
"type": "S",
"B": null,
"I64": null,
"F64": null,
"S": "actual_value",
...
}