您正在查看 Debezium 未发布版本的文档。
如果您想查看此页面的最新稳定版本,请在此 查看。

Vector 转 JSON

Debezium 会将向量数据类型列映射到向量数据的特定逻辑语义表示。如果您需要将该表示形式重新映射为更通用的格式(如 JSON),Debezium 提供了 Vector to Json 单消息转换(SMT)。

用例

Debezium 使用以下映射来映射向量数据类型列

数据库 列类型 逻辑语义类型 Kafka Connect 类型

MySQL

vector

io.debezium.data.FloatVector

ARRAY

PostgreSQL

vector

io.debezium.data.DoubleVector

ARRAY

PostgreSQL

halfvec

io.debezium.data.FloatVector

ARRAY

PostgreSQL

sparsevec

io.debezium.data.SparseVector

Struct

JDBC sink

最清晰的用例之一是使用此转换来处理目标关系数据库不支持向量数据类型的向量数据类型。例如,在 23ai 之前,您无法将此类数据类型写入 Db2、SQL Server 或 Oracle 等关系数据库。VectorToJsonConverter 转换提供了一种有用但简单的方法来解决此差异,方法是将事件负载中的所有向量数据类型字段从其各自的特定向量的逻辑语义表示转换为 JSON。

使用 JSON 的主要好处是,支持 JSON 数据类型的数据库将原生存储表示。对于没有原生 JSON 数据类型的关系数据库,它们将默认使用各自的长文本等效数据类型。

易用性

另一个用例涉及易用性。Kafka Connect API 并不是许多人通常乐于使用的 API,以更直观的格式提供数据可以简单地降低复杂性。由于 Debezium 的 JSON 语义类型是 io.debezium.data.Json,并且在 Kafka 事件结构中原生表示为字符串值,因此使用任何 JSON 库可以非常轻松地快速解析 JSON 详细信息。

按语义类型划分的 JSON 示例

Debezium 的逻辑语义类型由值数组组成,或者是一个数据结构,该结构不仅包含值数组,还包含描述向量 SQL 表示的其他属性。以下示例说明了基于 Debezium 逻辑语义类型的 JSON 输出。

DoubleVector 转换为 JSON 后
{
  "values": [1, 2, 3]
}
FloatVector 转换为 JSON 后
{
  "values": [1, 2, 3]
}
SparseVector 转换为 JSON 后
{
  "dimensions": 25,
  "vector": {
    "1": 10,
    "5": 25,
    "10": 100,
    "25": 10000
  }
}

示例

要将向量数据类型转换为 JSON,请在 Debezium 连接器的 Kafka Connect 配置中配置 VectorToJsonConverter

以下示例中的连接器配置会将所有 PostgreSQL 向量逻辑字段类型转换为 JSON

transforms=vectortojson
transforms.vectortojson.type=io.debezium.transforms.VectorToJsonConverter