Kafka Source Connector:负载模式配置在 Neo4j Connector for Kafka 5.1.5 中引入
Neo4j 的 Kafka Source Connector 支持三种负载模式,以控制序列化并发布到 Kafka 主题的数据格式:EXTENDED、COMPACT 和 RAW_JSON_STRING。该功能可通过 neo4j.payload-mode 属性进行配置,用户可以根据数据需求选择首选的序列化格式。
负载模式
neo4j.payload-mode 配置提供以下选项
|
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。此结构确保属性类型的任何更改都不会在源连接器或汇连接器产生模式强制错误。
| 字段 | 描述 |
|---|---|
type |
指示属性的类型。可能的取值包括: |
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",
...
}