Topik ini menjelaskan format data dari catatan operasi yang dihasilkan oleh Lindorm setelah data dalam tabel yang berlangganan dimasukkan, diperbarui, atau dihapus. Topik ini juga menyediakan data sampel untuk setiap jenis operasi. Format data default adalah Debezium Format V2.0. Anda dapat mengonfigurasi klien konsumen untuk mengonsumsi data sesuai dengan format tersebut.
Deskripsi format data
Kode sampel berikut menunjukkan contoh format data. Tabel berikut menjelaskan bidang dalam kode sampel.
{
"payload": {
"op": "u",
"ts_ms": 1465491411815,
"before": {
"id": 1004,
"name": "Jane"
},
"after": {
"id": 1004,
"name": "Anne"
},
"source": {
"version": "v1.0",
"db": "ld-xxxx",
"namespace": "default",
"table": "customers",
"ts_ms": 1465491411807
}
},
"schema": {
"type": "struct",
"fields": [
{
"type": "string",
"optional": false,
"field": "op"
}, {
"type": "int64",
"optional": false,
"field": "ts_ms"
}, {
"type": "struct",
"fields": [
{
"type": "int32",
"optional": false,
"field": "id"
}, {
"type": "string",
"optional": false,
"field": "name"
}
],
"optional": true,
"field": "before"
}, {
"type": "struct",
"fields": [
{
"type": "int32",
"optional": false,
"field": "id"
}, {
"type": "string",
"optional": false,
"field": "name"
}
],
"optional": true,
"field": "after"
}, {
"type": "struct",
"fields": [
{
"type": "string",
"optional": false,
"field": "version"
}, {
"type": "string",
"optional": false,
"field": "db"
}, {
"type": "string",
"optional": false,
"field": "namespace"
}, {
"type": "string",
"optional": false,
"field": "table"
}, {
"type": "int64",
"optional": false,
"field": "ts_ms"
}
],
"optional": false,
"field": "source"
}
],
"optional": false
}
}Nama bidang | Deskripsi |
payload.op |
|
payload.ts_ms | Timestamp UNIX saat data ditulis ke Kafka. |
payload.before | Data yang disimpan di baris yang sesuai sebelum operasi penyisipan, pembaruan, atau penghapusan dilakukan. |
payload.after | Data terbaru yang disimpan di baris yang sesuai setelah operasi penyisipan, pembaruan, atau penghapusan dilakukan. |
payload.source | Informasi tambahan tentang operasi.
|
schema | Bidang schema dibuat secara otomatis berdasarkan payload data yang akan dikonsumsi. Nilai bidang schema berada dalam format JSON. Bidang schema digunakan untuk mendeskripsikan bidang data yang akan dikonsumsi, termasuk tipe data dari setiap bidang. Secara default, setiap catatan operasi mencakup bidang schema. Isi bidang schema berada dalam struktur rekursif.
|
Format data catatan operasi dalam tabel HBase sama dengan tabel SQL. Namun, tabel HBase dan tabel SQL memiliki perbedaan struktural berikut:
Tabel HBase menyimpan data biner mentah di database. Data yang dikonsumsi menggunakan fitur pelacakan perubahan data adalah string yang dikodekan dalam Base64.
Tabel HBase menggunakan keluarga kolom. Oleh karena itu, nama kolom kolom non-kunci utama berada dalam format
keluarga kolom_nama kolom. Nama kolom kunci utama tetap menjadiROW.
Data sampel
SQL
Buat tabel dengan skema berikut di database Lindorm Anda:
CREATE TABLE customers (id VARCHAR,first_name VARCHAR,last_name VARCHAR, PRIMARY KEY(id));Data sampel untuk catatan penyisipan data
{ "schema": {}, "payload": { "op": "c", "ts_ms": 1465491411815, "before": null, "after": { "id": "1004", "first_name": "Anne", "last_name": "Kretchmar" }, "source": { "version": "v1.0", "db": "ld-xxxx", "namespace": "default", "table": "customers", "ts_ms": 1465491411807 } } }Data sampel untuk catatan pembaruan data
{ "schema": {}, "payload": { "op": "u", "ts_ms": 1465491411815, "before": { "id": "1004", "first_name": "Anne Marie", "last_name": "Kretchmar" }, "after": { "id": "1004", "first_name": "Anne", "last_name": "Kretchmar" }, "source": { "version": "v1.0", "db": "ld-xxxx", "namespace": "default", "table": "customers", "ts_ms": 1465491411807 } } }Data sampel untuk catatan penghapusan baris
{ "schema": {}, "payload": { "op": "d", "ts_ms": 1465491411815, "before": { "id": "1004", "first_name": "Anne Marie", "last_name": "Kretchmar" }, "after": null, "source": { "version": "v1.0", "db": "ld-xxxx", "namespace": "default", "table": "customers", "ts_ms": 1465491411807 } } }Data sampel untuk catatan penghapusan kolom
{ "schema": {}, "payload": { "op": "u", "ts_ms": 1465491411815, "before": { "id": "1004", "first_name": "Anne Marie", "last_name": "Kretchmar" }, "after": { "id": "1004", "first_name": "Anne Marie" }, "source": { "version": "v1.0", "db": "ld-xxxx", "namespace": "default", "table": "customers", "ts_ms": 1465491411807 } } }
HBase
Data sampel untuk catatan penyisipan data
Put put = new Put(Bytes.toBytes("user1"));
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes("name"), Bytes.toBytes("lucky"));
table.put(put);Data sampel untuk catatan pembaruan data
{
"schema": {},
"payload": {
"op": "c",
"ts_ms": 1725258859839,
"before": null,
"after": {
"ROW": "dXNlcjE=",
"f_name": "bHVja3k="
},
"source": {
"version": "v2.0",
"db": "ld-xxxx",
"namespace": "default",
"table": "customers",
"ts_ms": 1725258833727
}
}
}