Data Transmission Service (DTS) memungkinkan Anda memilih format penyimpanan untuk data yang disinkronkan atau dimigrasikan ke antrian pesan, seperti Kafka atau RocketMQ. Topik ini menjelaskan format data yang tersedia untuk membantu Anda mengurai data tersebut.
Format data
DTS memungkinkan Anda menyimpan data yang ditulis ke antrian pesan dalam format berikut:
DTS Avro: Format serialisasi data yang digunakan untuk mengonversi struktur data atau objek guna penyimpanan dan transmisi.
Shareplex Json: Format data yang digunakan ketika perangkat lunak replikasi data SharePlex membaca data dari database sumber dan menulisnya ke antrian pesan.
Canal Json: Format data yang digunakan ketika Canal mengurai log database inkremental dan mentransmisikan data inkremental tersebut ke antrian pesan.
DTS Avro
Anda dapat mengurai data berdasarkan definisi skema DTS Avro. Untuk informasi selengkapnya, lihat definisi skema DTS Avro dan contoh deserialisasi DTS Avro.
Dalam format DTS Avro, pernyataan Data Definition Language (DDL) bertipe string.
Shareplex Json
Parameter
Parameter | Deskripsi |
| Waktu saat transaksi dikomit di database. Formatnya adalah yyyy-MM-ddTHH:mm:ssZ (UTC). |
| ID pengguna yang mengkomit transaksi. |
| Tipe operasi data. Nilai yang valid: INSERT, UPDATE, DELETE, TRUNCATE, DROP COLUMN, UPDATE BEFORE, dan UPDATE AFTER. |
| System Change Number (SCN). SCN mengidentifikasi versi transaksi yang dikomit database pada titik waktu tertentu. Setiap transaksi yang dikomit diberi SCN unik. |
| Nilai alamat yang relatif unik yang digunakan untuk menemukan catatan di database. |
| ID transaksi. |
| Nomor urut operasi dalam transaksi. Urutan dimulai dari 1. |
| Jumlah total operasi dalam transaksi. |
| Nama tabel. |
| Indeks operasi dalam transaksi. Formatnya adalah |
| Waktu ketika transaksi dikomit ke database tujuan. |
Contoh
Masukkan data
{
"meta": {
"time": "2017-06-16T14:24:34",
"userid": 84,
"op": "ins",
"scn": "14589063118712",
"rowid": "AAATGpAAIAAItcIAAA",
"trans": "7.0.411499",
"seq": 1,
"size": 11,
"table": "CL_BIZ1.MIO_LOG",
"idx": "1/11",
"posttime": "2017-06-16T14:33:52"
},
"data": {
"MIO_LOG_ID": "32539737"
}
}Perbarui data
{
"meta": {
"time": "2017-06-16T15:38:13",
"userid": 84,
"op": "upd",
"table": "CL_BIZ1.MIO_LOG"
….
},
"data": {
"CNTR_NO": "1171201606"
},
"key": {
"MIO_LOG_ID": "32537893",
"PLNMIO_REC_ID": "31557806",
"POL_CODE": null,
"CNTR_TYPE": null,
"CNTR_NO": "1171201606syui26"
}
}Hapus data
{
"meta": {
"time": "2017-06-16T15:51:35",
"userid": 84,
"op": "del",
},
"data": {
"MIO_LOG_ID": "32539739",
"PLNMIO_REC_ID": "31557806",
"POL_CODE": null,
"CNTR_TYPE": null,
"CG_NO": null
}
}Canal Json
Parameter
Parameter | Deskripsi |
| Nama database. |
| Waktu saat operasi dijalankan di database sumber. Ini adalah stempel waktu UNIX 13 digit dalam milidetik. Catatan
|
| Nomor seri operasi. Catatan Nilai ini dihasilkan dari stempel waktu dan offset internal DTS. Nilai ini dapat membantu menentukan urutan operasi. |
| Menentukan apakah operasi tersebut merupakan operasi DDL.
|
| Tipe data dari bidang. Catatan Informasi parameter seperti presisi tidak didukung. |
| Data sebelum atau setelah perubahan. Catatan Untuk task sinkronisasi atau migrasi yang dibuat sebelum 20 Maret 2022, old menyimpan data setelah perubahan dan |
| Nama kunci primary. |
| Pernyataan SQL. |
| Tipe bidang yang dikonversi. Nilainya sama dengan nilai dataTypeNumber. Untuk informasi selengkapnya, lihat Pemetaan antara tipe bidang dan nilai dataTypeNumber. |
| Nama tabel. |
| Waktu saat operasi mulai ditulis ke database tujuan. Ini adalah stempel waktu UNIX 13 digit dalam milidetik. Catatan Anda dapat menggunakan mesin pencari untuk menemukan konverter stempel waktu UNIX. |
| Tipe operasi, seperti DELETE, UPDATE, atau INSERT. Catatan Selama fase task penuh, tipe ini tetap sebagai INIT. |
| Global Transaction Identifier (GTID). GTID bersifat unik secara global. Setiap transaksi berkorespondensi dengan satu GTID. |
Contoh
Perbarui data
Untuk task sinkronisasi atau migrasi yang dibuat sebelum 20 Maret 2022, ketika pernyataan DELETE dari tabel sumber disinkronkan atau dimigrasikan ke Kafka, old berisi data dan data bernilai null. Untuk menyelaraskan dengan komunitas open source, perilaku ini diubah untuk task yang dibuat atau dijalankan ulang pada atau setelah 20 Maret 2022. Untuk task tersebut, data berisi data dan old bernilai null.
Task sinkronisasi atau migrasi yang dibuat sebelum 20 Maret 2022
{
"old": [
{
"shipping_type": "aaa"
}
],
"database": "dbname",
"es": 1600161894000,
"id": 58,
"isDdl": false,
"mysqlType": {
"id": "bigint",
"shipping_type": "varchar"
},
"pkNames": [
"id"
],
"sql": "",
"sqlType": {
"id": -5,
"shipping_type": 12
},
"table": "tablename",
"ts": 1600161894771,
"type": "DELETE"
}Task sinkronisasi atau migrasi yang dibuat atau dijalankan ulang pada atau setelah 20 Maret 2022
{
"data": [
{
"id": "500000287",
"shipping_type": null
}
],
"database": "dbname",
"es": 1600161894000,
"id": 58,
"isDdl": false,
"mysqlType": {
"id": "bigint",
"shipping_type": "varchar"
},
"pkNames": [
"id"
],
"sql": "",
"sqlType": {
"id": -5,
"shipping_type": 12
},
"table": "tablename",
"ts": 1600161894771,
"type": "DELETE"
}
Operasi DDL
{
"database":"dbname", // Nama database untuk sinkronisasi atau migrasi.
"es":1600161894000, // Waktu saat data dari database sumber ditulis ke log biner.
"id":58, // Offset dalam cache DTS.
"isDdl":true, // Menentukan apakah operasi DDL disinkronkan atau dimigrasikan.
"sql":"eg:createxxx", // Pernyataan DDL dari log biner.
"table":"tablename", // Nama tabel untuk sinkronisasi atau migrasi.
"ts":1600161894771, // Waktu saat DTS menulis data ke tujuan.
"type":"DDL"
}