假设我需要使用Kafka Connect,而不是使用嵌套的模式结构,我想使用带有对象引用的模式。这个结构将使用id
值来连接不同的对象。
例如:
{
"insured": [
{
"id": "INS001",
"typeCode": "Primary",
"sequenceNumber": 1,
"fullName": "Mr. Tim Carlieux",
"legalEntityTypeCode": "Person"
}
],
"address": [
{
"id": "ADR001",
"parentEntityName": "insured",
"parentEntityId": "INS001",
"typeCode": "Home",
"sequenceNumber": 1,
"line1": "19 8th Ave",
"city": "Acity",
"stateProvinceCode": "AZ",
"county": "Acounty",
"postalCode": 99999
}
],
"communication": [
{
"id": "COM001",
"parentEntityName": "insured",
"parentEntityId": "INS001",
"phoneNumber": "222-3478543",
"phoneTypeCode": "Phone"
}
]
}
在上面的例子中,我将使用address
和/或communication
中的parentEntityName
和parentEntityId
的组合来确定我引用的是insured
中的哪个对象。
此外,address
和communication
部分中的对象可能并不总是将insured
作为父对象-communication
可能与任何数量的其他对象相关。
我相信在每个部分中获取id
的值应该是简单的,前提是底层数据具有有意义的关系结构——这是我期望从RDBMS中得到的。但我不确定是否填充parentEntityName
可以满足使用标准连接器。
Kafka Connect不能做任何这样的id查找(没有一个简单的消息转换,但这不是他们的意图)
你可以使用Kafka Streams或其他流处理库来扩展。在Connect处理数据之前/之后,将ID转换为一个完全定义的记录。您也不需要RDBMS。针对多个ktable的连接应该适用于简单的id