Vector 转 Json
Debezium 会将 vector 数据类型列映射到具有特定逻辑语义表示的 vector 数据。如果您需要将该表示形式重新映射为更通用的格式(如 JSON),Debezium 提供了 Vector to Json 单消息转换 (SMT)。
用例
Debezium 使用以下映射来映射 vector 数据类型列
| 数据库 | 列类型 | 逻辑语义类型 | Kafka Connect 类型 |
|---|---|---|---|
MySQL |
|
|
|
PostgreSQL |
|
|
|
PostgreSQL |
|
|
|
PostgreSQL |
|
|
|
一个更清晰的用例是使用此转换来处理面向目标关系数据库(不支持 vector 数据类型)的 vector 数据类型的消耗。例如,在 23ai 之前,您无法将此类数据类型写入 Db2、SQL Server 或 Oracle 等关系数据库。VectorToJsonConverter 转换提供了一种有用但简单的方法来解决此差异,通过将事件负载中的所有 vector 数据类型字段从其各自的特定于 vector 的逻辑语义表示转换为 JSON。
使用 JSON 的主要好处是,支持 JSON 数据类型的数据库将能够本机存储该表示形式。对于没有本机 JSON 数据类型的关系数据库,它们将默认使用其各自的长文本等效数据类型。
另一个用例涉及易用性。Kafka Connect API 并不是许多人经常喜欢使用的,以更直观的格式提供数据可以简单地降低复杂性。由于 Debezium 的 JSON 语义类型是 io.debezium.data.Json,并且它在 Kafka 事件结构中本机表示为字符串值,因此使用任何 JSON 库都可以非常轻松地快速解析 JSON 详细信息。
按语义类型划分的 JSON 示例
Debezium 的逻辑语义类型包含值数组,或者是一种数据结构,该结构不仅包含值数组,还包含描述 vector 的 SQL 表示的其他属性。以下图例说明了基于 Debezium 逻辑语义类型的 JSON 输出。
{
"values": [1, 2, 3]
}
{
"values": [1, 2, 3]
}
{
"dimensions": 25,
"vector": {
"1": 10,
"5": 25,
"10": 100,
"25": 10000
}
}