All Products
Search
Document Center

ApsaraDB for OceanBase (Deprecated):Format data

Last Updated:Jun 28, 2025

Topik ini menjelaskan format data yang digunakan dalam metode serialisasi dan saat data ditransmisikan dari OceanBase Database ke sistem antrian pesan.

Format data yang digunakan dalam metode serialisasi

Saat menggunakan layanan transmisi data untuk menyinkronkan data dari sumber ke instance Kafka, DataHub (tipe BLOB), atau RocketMQ, Anda dapat mengontrol format data yang disinkronkan melalui metode serialisasi. Metode serialisasi yang didukung adalah Default, Canal, DataWorks (V2.0), SharePlex, DefaultExtendColumnType, Debezium, DebeziumFlatten, DebeziumSmt, dan Avro.

Catatan
  • Hanya tenant MySQL dari OceanBase Database yang mendukung metode serialisasi Debezium, DebeziumFlatten, dan DebeziumSmt.

  • Metode serialisasi Avro hanya didukung saat menyinkronkan data dari tenant MySQL OceanBase Database ke instance Kafka.

Format pesan JSON Default

Saat menyinkronkan data ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi Default:

{
    "prevStruct": { // Gambar sebelum modifikasi.
        "col1": "val1" // Pasangan kunci-nilai yang berisi nilai kunci lengkap.
    },
    "postStruct": { // Gambar setelah modifikasi.
        "col1": "val1" // Pasangan kunci-nilai yang berisi nilai kunci lengkap.
    },
    "allMetaData"{
        "checkpoint": "STRING", // Checkpoint sinkronisasi saat ini, yang menentukan checkpoint target (timestamp tingkat detik) dalam fase sinkronisasi inkremental dan pasangan nilai kunci utama dalam fase sinkronisasi penuh.
        "record_primary_key": "STRING", // Nama kolom kunci utama. Jika kunci utama memiliki beberapa kolom, pisahkan nama kolom dengan \u0001.
        "record_primary_value": "STRING", // Nilai kunci utama. Jika kunci utama memiliki beberapa kolom, pisahkan nama kolom dengan \u0001.
        "source_identity": "STRING", // Pengenal sumber. Nilainya adalah subtopik dalam migrasi inkremental dan nomor urutan tanpa arti dalam migrasi penuh.
        "dbType": "STRING", // Jenis database. Nilai valid: MYSQL, ORACLE, OCEANBASE, OB_IN_ORACLE_MODE, DB2, OB_MYSQL, OB_ORACLE, dan DB2_LUW. Perhatikan bahwa OCEANBASE, OB_IN_ORACLE_MODE, dan DB2 digunakan oleh versi sebelumnya dari layanan transmisi data dan kompatibel dengan versi ini dari layanan transmisi data.
        "storeDataSequence": "LONG", // Bidang ini tersedia hanya ketika nilai sequenceEnabled diatur ke true dalam file konfigurasi source.json dalam skenario sinkronisasi inkremental. Nilai default: true. Bidang ini digunakan untuk pengurutan. Urutan dibuat selama proses sinkronisasi dalam format timestamp + nomor urutan. Nomor urutan bertambah dan tidak melebihi lima digit. {Timestamp}{Nomor urutan bertambah}. 
        "table_name": "STRING", // Nama tabel yang dimodifikasi menggunakan pernyataan SQL.
        "db": "STRING", // Nama database yang dimodifikasi menggunakan pernyataan SQL. Untuk database OceanBase, nama database mencakup nama tenant. Formatnya adalah {tenant}.{database}.
        "timestamp": "STRING", // Timestamp dalam detik untuk modifikasi data, yang tersedia hanya untuk sinkronisasi inkremental.
        "uniqueId": "STRING", // Nomor urutan sebagai pengenal yang diteruskan dari penyimpanan dalam migrasi inkremental.
        "ddlType": "STRING", // Jenis operasi DDL.
    },
    "recordType": "INSERT/UPDATE/DELETE/HEARTBEAT/DDL" // Jenis modifikasi.
}
  • Jika catatan DDL hanya berisi kunci dengan nama kolom "ddl", nilainya adalah pernyataan DDL.

  • Gambar sebelum dan sesudah:

    • prevStruct: Gambar sebelum data inkremental, yaitu data sebelum pernyataan SQL dieksekusi.

    • postStruct: Gambar sesudah data inkremental, yaitu data setelah pernyataan SQL dieksekusi.

    DELETE hanya mencakup bidang prevStruct. INSERT dan DDL hanya mencakup bidang postStruct. UPDATE mencakup baik prevStruct maupun postStruct. HEARTBEAT (yang menunjukkan pesan heartbeat berkala) tidak mencakup prevStruct atau postStruct.

Berikut ini adalah beberapa contoh:

  • Contoh operasi penyisipan data (INSERT)

    {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table_name",
            "db": "tenant.database",
            "timestamp": "1609344671"
        },
        "prevStruct": null,
        "recordType": "INSERT",
        "postStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2147483646,
            "col4": 9223372036854775806,
            "col5": 10223372036854775806,
            "col6": 1.2222,
            "col7": 9.999999,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9.99999999999,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662.012345"
        }
    }
  • Contoh operasi pembaruan data (UPDATE)

      {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table_name",
            "db": "tenant.database",
            "timestamp": "1609344671"
        },
        "prevStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2147483646,
            "col4": 9223372036854775806,
            "col5": 10223372036854775806,
            "col6": 1.2222,
            "col7": 9.999999999999,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9.999999999999,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662.012345",
        },
        "recordType": "UPDATE",
        "postStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2147483646,
            "col4": 9223372036854775806,
            "col5": 10223372036854775806,
            "col6": 1.2222,
            "col7": 9.999999999999,
            "col8": "hello world 2020",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9.999999999999,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662.012345"
        }
    }
  • Contoh operasi penghapusan data (DELETE)

    {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table_name",
            "db": "tenant.database",
            "timestamp": "1609344671"
        },
        "prevStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2147483646,
            "col4": 9223372036854775806,
            "col5": 10223372036854775806,
            "col16": 1.2222,
            "col7": 9.99999999,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9.999999999,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662.012345"
        },
        "recordType": "DELETE",
        "postStruct": null
    }
  • Contoh operasi DDL

    alter table connector_test.all_mysql_type_test add column c90 varchar(30) default "test" comment 'test';
    {
        "prevStruct": null,
        "postStruct": {
            "ddl": "alter table connector_test.all_mysql_type_test add column c90 varchar(30) default \"test\" comment 'test'"
        },
        "allMetaData": {
            "checkpoint": "1671177057",
            "dbType": "OB_MYSQL",
            "storeDataSequence": null,
            "db": "connector_test",
            "timestamp": "1671177057",
            "uniqueId": null,
            "ddlType": "ALTER_TABLE",
            "record_primary_key": null,
            "source_identity": null,
            "record_primary_value": null,
            "table_name": "all_mysql_type_test"
        },
        "recordType": "DDL"
    }

Format pesan JSON Canal

Saat menyinkronkan data ke instance Kafka, DataHub (tipe BLOB), atau RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi Canal:

{
    "database": "STRING", // Nama database yang dimodifikasi menggunakan pernyataan SQL. Untuk database OceanBase, Anda hanya dapat menentukan nama database dan mengabaikan nama tenant.
    "sqlType": {
        "col1": "INTEGER" // Tipe data kolom. Untuk informasi lebih lanjut, lihat java.sql.Types.
    },
    "data": [ // Pasangan nilai kunci data yang dimodifikasi. Bidang ini ada hanya dalam satu pesan.
        {
            "col1": "val1"
        }
    ],
    "pkNames": [ // Nama kolom kunci utama.
        "col1"
    ],
    "old": [ // Bidang ini ada hanya dalam pesan pembaruan dan menunjukkan kolom yang dimodifikasi menggunakan pernyataan UPDATE. Ini menunjukkan nilai kolom sebelum modifikasi.
        {
            "col1": "val1"
        }
    ],
    "mysqlType": { // Deskripsi tipe kolom.
        "col": "STRING"
    },
    "type": "STRING", // Jenis perubahan.
    "table": "STRING", // Nama tabel yang dimodifikasi menggunakan pernyataan SQL.
    "es": "LONG", // Waktu modifikasi, yaitu timestamp dalam milidetik.
    "isDdl": "BOOLEAN", // Menunjukkan apakah pernyataan tersebut adalah pernyataan DDL.
    "ts": "LONG", // Timestamp saat data ditulis ke target.
    "sql": "STRING" // Kosong.
}

Berikut adalah beberapa contoh:

  • Contoh penyisipan data (INSERT):

    {
        "database": "database",
        "sqlType": {
            "col1": 93,
            "col2": 12,
            "col3": 6,
            "col4": 8,
            "col5": 5,
            "col6": 92,
            "col7": 4,
            "col8": -5,
            "col9": 2004,
            "col10": -6,
            "col11": 91,
            "col12": 3,
            "col13": -5,
            "col14": 93
        },
        "data": [
            {
                "col1": "2020-11-25 00:01:02",
                "col2": "hello world",
                "col3": 1.2222,
                "col4": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col5": 129,
                "col6": "00:01:02",
                "col7": 2147483646,
                "col8": 9223372036854775806,
                "col9": "blob_data",
                "col10": 3,
                "col11": "2020-11-25",
                "col12": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col13": 10223372036854775806,
                "col14": "2024-09-26 16:22:43"
            }
        ],
        "pkNames": [
            "col1",
            "col2"
        ],
        "old": null,
        "mysqlType": {
            "col1": "datetime",
            "col2": "varchar",
            "col3": "float",
            "col4": "double",
            "col5": "smallint",
            "col6": "time",
            "col7": "int",
            "col8": "int64",
            "col9": "blob",
            "col10": "tinyint",
            "col11": "date",
            "col12": "decimal",
            "col13": "bigint",
            "col14": "timestamp"
        },
        "type": "INSERT",
        "table": "table",
        "es": 1609344671000,
        "isDdl": false,
        "ts": 1618323429026,
        "sql": ""
    }
  • Contoh pembaruan data (UPDATE):

    {
        "database": "database",
        "sqlType": {
            "col1": 93,
            "col2": 12,
            "col3": 6,
            "col4": 8,
            "col5": 5,
            "col6": 92,
            "col7": 4,
            "col8": -5,
            "col9": 2004,
            "col10": -6,
            "col11": 91,
            "col12": 3,
            "col13": -5,
            "col14": 93
        },
        "data": [
            {
                "col1": "2020-11-25 00:01:02",
                "col2": "hello world 2020",
                "col3": 1.2222,
                "col4": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col5": 129,
                "col6": "00:01:02",
                "col7": 2147483646,
                "col8": 9223372036854775806,
                "col9": "blob_data",
                "col10": 3,
                "col11": "2020-11-25",
                "col12": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col13": 10223372036854775806,
                "col14": "2024-09-26 16:22:43"
            }
        ],
        "pkNames": [
            "col1",
            "col2"
        ],
        "old": [
            {
                "string": "hello world"
            }
        ],
        "mysqlType": {
            "col1": "datetime",
            "col2": "varchar",
            "col3": "float",
            "col4": "double",
            "col5": "smallint",
            "col6": "time",
            "col7": "int",
            "col8": "int64",
            "col9": "blob",
            "col10": "tinyint",
            "col11": "date",
            "col12": "decimal",
            "col13": "bigint",
            "col14": "timestamp"
        },
        "type": "UPDATE",
        "table": "table",
        "es": 1609344671000,
        "isDdl": false,
        "ts": 1618364572908,
        "sql": ""
    }
    
  • Contoh penghapusan data (DELETE):

    {
        "database": "database",
        "sqlType": {
            "col1": 93,
            "col2": 12,
            "col3": 6,
            "col4": 8,
            "col5": 5,
            "col6": 92,
            "col7": 4,
            "col8": -5,
            "col9": 2004,
            "col10": -6,
            "col11": 91,
            "col12": 3,
            "col13": -5,
            "col14": 93
        },
        "data": [
            {
                "col1": "2020-11-25 00:01:02",
                "col2": "hello world",
                "col3": 1.2222,
                "col4": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col5": 129,
                "col6": "00:01:02",
                "col7": 2147483646,
                "col8": 9223372036854775806,
                "col9": "blob_data",
                "col10": 3,
                "col11": "2020-11-25",
                "col12": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
                "col13": 10223372036854775806,
                "col14": "2024-09-26 16:22:43"
            }
        ],
        "pkNames": [
            "int8",
            "int16"
        ],
        "old": null,
        "mysqlType": {
            "col1": "datetime",
            "col2": "varchar",
            "col3": "float",
            "col4": "double",
            "col5": "smallint",
            "col6": "time",
            "col7": "int",
            "col8": "int64",
            "col9": "blob",
            "col10": "tinyint",
            "col11": "date",
            "col12": "decimal",
            "col13": "bigint",
            "col14": "timestamp"
        },
        "type": "DELETE",
        "table": "table",
        "es": 1609344671000,
        "isDdl": false,
        "ts": 1618364660278,
        "sql": ""
    }
    
  • Contoh operasi DDL:

    alter table connector_test.all_mysql_type_test add column c90 varchar(30) default "test" comment 'test';
    {
        "database": "connector_test",
        "sqlType": null,
        "data": null,
        "pkNames": null,
        "old": null,
        "mysqlType": null,
        "type": "ALTER",
        "table": "all_mysql_type_test",
        "es": 1671177209000,
        "isDdl": true,
        "ts": 1671177291475,
        "sql": "alter table connector_test.all_mysql_type_test add column c90 varchar(30) default \"test\" comment 'test'"
    }
    

Format pesan JSON Canal

Saat menyinkronkan data ke instance Kafka, DataHub (tipe BLOB), atau RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi DataWorks:

{
    "version": "2.0", // Versi protokol. Hanya DataWorks 2.0 yang didukung.
    "schema": { // Informasi metadata yang dimodifikasi, hanya nama kolom dan tipe kolom yang ditentukan.
        "source": { // Sumber dari modifikasi.
            "dbType": "mysql", // Jenis sumber.
            "dbVersion": "5.7.35", // Versi database.
            "dbName": "myDatabase", // Nama database.
            "schema": "mySchema", // Nama skema. Bidang ini diperlukan dalam sistem dengan skema.
            "table": "tableName" // Nama tabel.
        },
    "column": [ // Kolom data yang dimodifikasi. Bidang ini menunjukkan konten rekaman yang diperbarui di tabel target.
            {
                "name": "id",
                "type": "bigint"
            },
            {
                "name": "name",
                "type": "varchar(20)"
            },
            {
                "name": "mydata",
                "type": "binary"
            },
            {
                "name": "ts",
                "type": "datetime"
            }
        ],
        "pk": [ // Bidang ini diperlukan jika tabel memiliki kunci utama atau kunci unik. Jika tidak, bidang ini opsional.
            "pkName1",
            "pkName2"
        ]
    },
    "payload": {
        "before": {
            "data": {
                "id": 111,
                "name": "scooter",
                "mydata": "[base64 string]", // Pengkodean Base64 diperlukan untuk tipe biner.
                "ts": 1590315269000,123456789 // Timestamp dengan bagian integer sebanyak 13 digit dan bagian pecahan sebanyak 9 digit.
            }
        },
        "after": {
            "data": {
                "id": 222,
                "name": "donald",
                "mydata": "[base64 string]",
                "ts": 1590315269000
            }
        },
        "op": "INSERT/UPDATE/DELETE/HEARTBEAT/TRANSACTION_BEGIN/TRANSACTION_END/CREATE/ALTER/ERASE/QUERY/TRUNCATE/RENAME/CINDEX/DINDEX/GTID/XACOMMIT/XAROLLBACK/...", // Jenis operasi. Nilainya dalam huruf kapital.
        "timestamp": {
            "eventTime": 1620457659000 // Waktu modifikasi pada database sumber, yaitu timestamp 13 digit dalam milidetik.
        },
        "ddl": {
            "text": "ADD COLUMN ..."
        },
        "scn": "Nomor perubahan sistem (SCN) yang bertambah."
    },
    "extend": { // Bidang tambahan yang dapat digunakan untuk memenuhi kebutuhan ekstensi di masa mendatang. Bidang ini bisa tidak ditentukan jika tidak ada ekstensi yang tersedia.
        "load_fm": "CIBS" // Sistem sumber, misalnya, "CIBS".
    }
}

Pesan heartbeat dari tugas sinkronisasi:

{
    "version": "2.0", // Versi protokol.
    "payload": {
        "timestamp": {
            "eventTime": 1620457659000 // Timestamp paket heartbeat.
        },
        "op": "HEARTBEAT" // Menunjukkan paket heartbeat.
    }
}

Berikut beberapa contoh:

  • Contoh penyisipan data (INSERT)

    {
        "version": "2.0",
        "schema": {
            "source": {
                "dbType": "ob_mysql",
                "dbVersion": null,
                "dbName": "db",
                "schema": null,
                "table": "tab"
            },
            "column": [
                {
                    "name": "int8",
                    "type": "TINYINT"
                },
                {
                    "name": "int16",
                    "type": "SMALLINT"
                },
                {
                    "name": "int32",
                    "type": "INT"
                },
                {
                    "name": "int64",
                    "type": "INT64"
                },
                {
                    "name": "float32",
                    "type": "FLOAT"
                },
                {
                    "name": "float64",
                    "type": "DOUBLE"
                },
                {
                    "name": "bigInt",
                    "type": "BIGINT"
                },
                {
                    "name": "boolean",
                    "type": "BOOLEAN"
                },
                {
                    "name": "string",
                    "type": "VARCHAR"
                },
                {
                    "name": "bytes",
                    "type": "BLOB"
                },
                {
                    "name": "decimal",
                    "type": "DECIMAL"
                },
                {
                    "name": "localDate",
                    "type": "DATE"
                },
                {
                    "name": "localTime",
                    "type": "TIME"
                },
                {
                    "name": "localDateTime",
                    "type": "DATETIME"
                },
                {
                    "name": "timestamp",
                    "type": "TIMESTAMP"
                },
                {
                    "name": "zonedDateTime",
                    "type": "ZONED_DATETIME"
                },
                {
                    "name": "intervalDayToSecond",
                    "type": "INTERVAL_DAY_TO_SECOND"
                },
                {
                    "name": "intervalYearToMonth",
                    "type": "INTERVAL_YEAR_TO_MONTH"
                }
            ],
            "pk": [
                "pkName1",
                "pkName12"
            ]
        },
        "payload": {
            "before": null,
            "after": {
                "data": {
                    "col1": 3,
                    "col2": 129,
                    "col3": 2147483646,
                    "col4": 9223372036854775806,
                    "col5": 1.2222,
                    "col6": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col7": 10223372036854775806,
                    "col8": 1,
                    "col9": "hello world",
                    "col10": "aGVsbG8gd29ybGQ=",
                    "col11": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col12": "2020-11-25",
                    "col13": "00:01:02",
                    "col14": "2020-11-25 00:01:02",
                    "col15": "1606233662.012345",
                    "col16": "2020-11-25 00:01:02.012345 Asia/Shanghai",
                    "col17": "INTERVAL '3' DAY",
                    "col18": "INTERVAL '4' YEAR"
                }
            },
            "op": "INSERT",
            "timestamp": {
                "eventTime": 1647581000000,
                "systemTime": 1647581000795,
                "checkpointTime": 1647581000
            },
            "ddl": null,
            "scn": "null"
        },
        "extend": {
            "load_fm": "test"
        }
    }
  • Contoh pembaruan data (UPDATE)

    {
        "version": "2.0",
        "schema": {
            "source": {
                "dbType": "ob_mysql",
                "dbVersion": null,
                "dbName": "db",
                "schema": null,
                "table": "tab"
            },
            "column": [
                {
                    "name": "int8",
                    "type": "TINYINT"
                },
                {
                    "name": "int16",
                    "type": "SMALLINT"
                },
                {
                    "name": "int32",
                    "type": "INT"
                },
                {
                    "name": "int64",
                    "type": "INT64"
                },
                {
                    "name": "float32",
                    "type": "FLOAT"
                },
                {
                    "name": "float64",
                    "type": "DOUBLE"
                },
                {
                    "name": "bigInt",
                    "type": "BIGINT"
                },
                {
                    "name": "boolean",
                    "type": "BOOLEAN"
                },
                {
                    "name": "string",
                    "type": "VARCHAR"
                },
                {
                    "name": "bytes",
                    "type": "BLOB"
                },
                {
                    "name": "decimal",
                    "type": "DECIMAL"
                },
                {
                    "name": "localDate",
                    "type": "DATE"
                },
                {
                    "name": "localTime",
                    "type": "TIME"
                },
                {
                    "name": "localDateTime",
                    "type": "DATETIME"
                },
                {
                    "name": "timestamp",
                    "type": "TIMESTAMP"
                },
                {
                    "name": "zonedDateTime",
                    "type": "ZONED_DATETIME"
                },
                {
                    "name": "intervalDayToSecond",
                    "type": "INTERVAL_DAY_TO_SECOND"
                },
                {
                    "name": "intervalYearToMonth",
                    "type": "INTERVAL_YEAR_TO_MONTH"
                }
            ],
            "pk": [
                "pkName1",
                "pkName2"
            ]
        },
        "payload": {
            "before": {
                "data": {
                    "col1": 3,
                    "col2": 129,
                    "col3": 2147483646,
                    "col4": 9223372036854775806,
                    "col5": 1.2222,
                    "col6": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col7": 10223372036854775806,
                    "col8": 1,
                    "col9": "hello world",
                    "col10": "aGVsbG8gd29ybGQ=",
                    "col11": 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col12": "2020-11-25",
                    "col13": "00:01:02",
                    "col14": "2020-11-25 00:01:02",
                    "col15": "1606233662.012345",
                    "col16": "2020-11-25 00:01:02.012345 Asia/Shanghai",
                    "col17": "INTERVAL '3' DAY",
                    "col18": "INTERVAL '4' YEAR"
                }
            },
            "after": {
                "data": {
                    "col1": 3,
                    "col2": 129,
                    "col3": 2147483646,
                    "col4": 9223372036854775806,
                    "col5": 1.2222,
                    "col6": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col7": 10223372036854775806,
                    "col8": 1,
                    "col9": "hello world 2020",
                    "col10": "aGVsbG8gd29ybGQ=",
                    "col11": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col12": "2020-11-25",
                    "col13": "00:01:02",
                    "col14": "2020-11-25 00:01:02",
                    "col15": "1606233662.012345",
                    "col16": "2020-11-25 00:01:02.012345 Asia/Shanghai",
                    "col17": "INTERVAL '3' DAY",
                    "col18": "INTERVAL '4' YEAR"
                }
            },
            "op": "UPDATE",
            "timestamp": {
                "eventTime": 1647581038000,
                "systemTime": 1647581038674,
                "checkpointTime": 1647581038
            },
            "ddl": null,
            "scn": "null"
        },
        "extend": {
            "load_fm": "test"
        }
    }
  • Contoh penghapusan data (DELETE)

    {
        "version": "2.0",
        "schema": {
            "source": {
                "dbType": "ob_mysql",
                "dbVersion": null,
                "dbName": "db",
                "schema": null,
                "table": "tab"
            },
            "column": [
                {
                    "name": "int8",
                    "type": "TINYINT"
                },
                {
                    "name": "int16",
                    "type": "SMALLINT"
                },
                {
                    "name": "int32",
                    "type": "INT"
                },
                {
                    "name": "int64",
                    "type": "INT64"
                },
                {
                    "name": "float32",
                    "type": "FLOAT"
                },
                {
                    "name": "float64",
                    "type": "DOUBLE"
                },
                {
                    "name": "bigInt",
                    "type": "BIGINT"
                },
                {
                    "name": "boolean",
                    "type": "BOOLEAN"
                },
                {
                    "name": "string",
                    "type": "VARCHAR"
                },
                {
                    "name": "bytes",
                    "type": "BLOB"
                },
                {
                    "name": "decimal",
                    "type": "DECIMAL"
                },
                {
                    "name": "localDate",
                    "type": "DATE"
                },
                {
                    "name": "localTime",
                    "type": "TIME"
                },
                {
                    "name": "localDateTime",
                    "type": "DATETIME"
                },
                {
                    "name": "timestamp",
                    "type": "TIMESTAMP"
                },
                {
                    "name": "zonedDateTime",
                    "type": "ZONED_DATETIME"
                },
                {
                    "name": "intervalDayToSecond",
                    "type": "INTERVAL_DAY_TO_SECOND"
                },
                {
                    "name": "intervalYearToMonth",
                    "type": "INTERVAL_YEAR_TO_MONTH"
                }
            ],
            "pk": [
                "pkName1",
                "pkName2"
            ]
        },
        "payload": {
            "before": {
                "data": {
                    "col1": 3,
                    "col2": 129,
                    "col3": 2147483646,
                    "col4": 9223372036854775806,
                    "col5": 1.2222,
                    "col6": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col7": 10223372036854775806,
                    "col8": 1,
                    "col9": "hello world",
                    "col10": "aGVsbG8gd29ybGQ=",
                    "col11": 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125,
                    "col12": "2020-11-25",
                    "col13": "00:01:02",
                    "col14": "2020-11-25 00:01:02",
                    "col15": "1606233662.012345",
                    "col16": "2020-11-25 00:01:02.012345 Asia/Shanghai",
                    "col17": "INTERVAL '3' DAY",
                    "col18": "INTERVAL '4' YEAR"
                }
            },
            "after": null,
            "op": "DELETE",
            "timestamp": {
                "eventTime": 1647581072000,
                "systemTime": 1647581072976,
                "checkpointTime": 1647581072
            },
            "ddl": null,
            "scn": "null"
        },
        "extend": {
            "load_fm": "test"
        }
    }
  • Contoh operasi DDL

    alter table connector_test.all_mysql_type_test add column c90 varchar(30) default "test" comment 'test';
    {
        "version": "2.0",
        "schema": {
            "source": {
                "dbType": "ob_mysql",
                "dbVersion": null,
                "dbName": "connector_test",
                "schema": null,
                "table": "all_mysql_type_test"
            },
            "column": null,
            "pk": null
        },
        "payload": {
            "before": null,
            "after": null,
            "op": "ALTER",
            "timestamp": {
                "eventTime": 1.671.177.209.000,
                "systemTime": 1.671.177.291.485,
                "checkpointTime": 1.671.177.200
            },
            "ddl": {
                "text": "alter table connector_test.all_mysql_type_test add column c90 varchar(30) default \"test\" comment 'test'"
            },
            "scn": "null"
        },
        "extend": {}
    }
    

Format pesan JSON SharePlex

Saat menyinkronkan data ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi DataWorks:

{
    "data": { // Pasangan kunci-nilai data yang dimodifikasi. Jika pernyataan INSERT atau DELETE dijalankan, nilainya adalah nilai penuh. Jika pernyataan UPDATE dijalankan, nilainya adalah nilai yang dimodifikasi.
        "col1": "val1"
    },
    "meta": {
        "time": "YYYY-MM-DDTHH:mm:ss", // Waktu modifikasi.
        "op": "", // Jenis perubahan. Nilai valid: ins, upd, del, dan ddl.
        "posttime": "YYYY-MM-DDTHH:mm:ss", // Waktu saat data ditulis ke target.
        "idx": "STRING", // Indeks pesan dalam transaksi/Jumlah pesan indeks. Bidang ini sudah tidak digunakan lagi. 
        "size": NUMBER, // Jumlah pesan dalam transaksi. Bidang ini sudah tidak digunakan lagi. 
        "seq": "STRING", // Urutan pengurutan. Bidang ini hanya tersedia ketika transactionEnabled disetel ke true di database sumber.
        "table": "STRING", // Nama database dan tabel dalam format {database}.{table} yang dimodifikasi menggunakan pernyataan SQL.
        "rowid": "STRING", // {Nama database dan tabel yang dimodifikasi}-{Nilai kunci utama yang dipisahkan dengan \u0001}. 
        "trans": "STRING", // ID transaksi.
        "scn": "STRING" // Bidang ini hanya tersedia ketika nilai sequenceEnabled disetel ke true di file konfigurasi source.json dalam skenario sinkronisasi tambahan. Nilai default: true. Bidang ini digunakan untuk pengurutan. Urutan dibuat selama proses sinkronisasi dalam format timestamp + nomor urutan. Nomor urutan bertambah dan tidak melebihi lima digit. 
    },
    "key": { // Nilai kunci sebelum modifikasi, yang hanya tersedia untuk modifikasi menggunakan pernyataan UPDATE.
    }
}

Berikut beberapa contoh:

  • Contoh penyisipan data (INSERT)

    {
        "data": {
            "col1": "2020-11-25 00:01:02",
            "col2": "hello world",
            "col3": "INTERVAL '3' DAY",
            "col4": 1.2222,
            "col5": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col6": 129,
            "col7": "00:01:02",
            "col8": 1,
            "col9": "2020-11-25 00:01:02.012345 Asia/Shanghai",
            "col10": 2.147.483.646,
            "col11": 9.223.372.036.854.775.806,
            "col12": "aGVsbG8gd29ybGQ=",
            "col13": "INTERVAL '4' YEAR",
            "col14": 3,
            "col15": "2020-11-25",
            "col16": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col17": 10.223.372.036.854.775.806,
            "col18": "1606233662.012345"
        },
        "meta": {
            "posttime": "2020-12-07T13:22:00",
            "op": "ins",
            "size": 10,
            "time": "2020-11-25T00:01:02",
            "idx": "1/10",
            "seq": 1,
            "table": "mock_database.mock_table",
            "rowid":"mock_database.mock_table-3129",
            "trans": "shareplex_transaction_id",
            "scn": "123456789"
        }
    }
    
  • Contoh pembaruan data (UPDATE)

    {
        "data": {
            "string": "hello world 2020"
        },
        "meta": {
            "posttime": "2020-12-07T13:59:09",
            "op": "upd",
            "size": 10,
            "time": "2020-11-25T00:01:02",
            "idx": "1/10",
            "seq": 1,
            "table": "mock_database.mock_table",
            "rowid": "mock_database.mock_table-3\u0001129",
            "trans": "shareplex_transaction_id",
            "scn": "123456789"
        },
        "key": {
            "col1": "2020-11-25 00:01:02",
            "col2": "hello world",
            "col3": "INTERVAL '3' DAY",
            "col4": 1.2222,
            "col5": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col6": 129,
            "col7": "00:01:02",
            "col8": 1,
            "col9": "2020-11-25 00:01:02.012345 Asia/Shanghai",
            "col10": 2.147.483.646,
            "col11": 9.223.372.036.854.775.806,
            "col12": "aGVsbG8gd29ybGQ=",
            "col13": "INTERVAL '4' YEAR",
            "col14": 3,
            "col15": "2020-11-25",
            "col16": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col17": 10.223.372.036.854.775.806,
            "col18": "1606233662.012345"
        }
    }
    
  • Contoh penghapusan data (DELETE)

    {
        "data": {
            "col1": "2020-11-25 00:01:02",
            "col2": "hello world",
            "col3": "INTERVAL '3' DAY",
            "col4": 1.2222,
            "col5": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col6": 129,
            "col7": "00:01:02",
            "col8": 1,
            "col9": "2020-11-25 00:01:02.012345 Asia/Shanghai",
            "col10": 2.147.483.646,
            "col11": 9.223.372.036.854.775.806,
            "col12": "aGVsbG8gd29ybGQ=",
            "col13": "INTERVAL '4' YEAR",
            "col14": 3,
            "col15": "2020-11-25",
            "col16": 9.99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col17": 10.223.372.036.854.775.806,
            "col18": "1606233662.012345"
        },
        "meta": {
            "posttime": "2020-12-07T13:34:10",
            "op": "del",
            "size": 10,
            "time": "2020-11-25T00:01:02",
            "idx": "1/10",
            "seq": 1,
            "table": "mock_database.mock_table",
            "rowid": "mock_database.mock_table-3\u0001129",
            "trans": "shareplex_transaction_id",
            "scn": "123456789"
        }
    }
  • Contoh operasi DDL

    alter table connector_test.all_mysql_type_test add column c90 varchar(30) default "test" comment 'test';
    {
        "data": {},
        "meta": {
            "posttime": "2022-12-16T15:54:51",
            "op": "ddl",
            "size": 0,
            "time": "2022-12-16T15:53:29",
            "idx": "0/0",
            "seq": 0,
            "table": "connector_test.all_mysql_type_test",
            "rowid": "connector_test.all_mysql_type_test-",
            "trans": null,
            "scn": "null"
        },
        "sql": {
            "ddl": "alter table connector_test.all_mysql_type_test add column c90 varchar(30) default \"test\" comment 'test'"
        }
    }

Format pesan JSON DefaultExtendColumnType

Saat menyinkronkan data ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi DefaultExtendColumnType:

Pesan JSON DefaultExtendColumnType dibuat dalam format Default dengan field __light_type. Field ini menentukan tipe data dari field.

{
    "prevStruct": { // Gambar sebelum modifikasi.
    },
    "postStruct": { // Gambar setelah modifikasi.
        "__light_type": {
            "col": { // Nama field.
                "schemaType": "type" // Tipe nilai.
            }
        }
    },
    "allMetaData": {

    }
}

Berikut beberapa contoh:

  • Contoh penyisipan data (INSERT)

    {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table",
            "db": "database",
            "timestamp": "1609344671"
        },
        "prevStruct": null,
        "recordType": "INSERT",
        "postStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2.147.483.646,
            "col4": 9.223.372.036.854.775.806,
            "col5": 10.223.372.036.854.775.806,
            "col6": 1,2222,
            "col7": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662,012345",
            "__light_type": {
                "int8": {
                    "schemaType": "TINYINT"
                },
                "int16": {
                    "schemaType": "SMALLINT"
                },
                "int32": {
                    "schemaType": "INT"
                },
                "int64": {
                    "schemaType": "INT64"
                },
                "bigInt": {
                    "schemaType": "BIGINT"
                },
                "float32": {
                    "schemaType": "FLOAT"
                },
                "float64": {
                    "schemaType": "DOUBLE"
                },
                "string": {
                    "schemaType": "VARCHAR"
                },
                "bytes": {
                    "schemaType": "BLOB"
                },
                "decimal": {
                    "schemaType": "DECIMAL"
                },
                "localDate": {
                    "schemaType": "DATE"
                },
                "localTime": {
                    "schemaType": "TIME"
                },
                "localDateTime": {
                    "schemaType": "DATETIME"
                },
                "timestamp_in_long": {
                    "schemaType": "TIMESTAMP"
                }
            }
        }
    }
  • Contoh pembaruan data (UPDATE)

    {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table",
            "db": "database",
            "timestamp": "1609344671"
        },
        "prevStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2.147.483.646,
            "col4": 9.223.372.036.854.775.806,
            "col5": 10.223.372.036.854.775.806,
            "col6": 1,2222,
            "col7": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662,012345",
            "__light_type": {
                "int8": {
                    "schemaType": "TINYINT"
                },
                "int16": {
                    "schemaType": "SMALLINT"
                },
                "int32": {
                    "schemaType": "INT"
                },
                "int64": {
                    "schemaType": "INT64"
                },
                "bigInt": {
                    "schemaType": "BIGINT"
                },
                "float32": {
                    "schemaType": "FLOAT"
                },
                "float64": {
                    "schemaType": "DOUBLE"
                },
                "string": {
                    "schemaType": "VARCHAR"
                },
                "bytes": {
                    "schemaType": "BLOB"
                },
                "decimal": {
                    "schemaType": "DECIMAL"
                },
                "localDate": {
                    "schemaType": "DATE"
                },
                "localTime": {
                    "schemaType": "TIME"
                },
                "localDateTime": {
                    "schemaType": "DATETIME"
                },
                "timestamp_in_long": {
                    "schemaType": "TIMESTAMP"
                }
            }
        },
        "recordType": "UPDATE",
        "postStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2.147.483.646,
            "col4": 9.223.372.036.854.775.806,
            "col5": 10.223.372.036.854.775.806,
            "col6": 1,2222,
            "col7": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col8": "hello world 2020",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662,012345",
            "__light_type": {
                "int8": {
                    "schemaType": "TINYINT"
                },
                "int16": {
                    "schemaType": "SMALLINT"
                },
                "int32": {
                    "schemaType": "INT"
                },
                "int64": {
                    "schemaType": "INT64"
                },
                "bigInt": {
                    "schemaType": "BIGINT"
                },
                "float32": {
                    "schemaType": "FLOAT"
                },
                "float64": {
                    "schemaType": "DOUBLE"
                },
                "string": {
                    "schemaType": "VARCHAR"
                },
                "bytes": {
                    "schemaType": "BLOB"
                },
                "decimal": {
                    "schemaType": "DECIMAL"
                },
                "localDate": {
                    "schemaType": "DATE"
                },
                "localTime": {
                    "schemaType": "TIME"
                },
                "localDateTime": {
                    "schemaType": "DATETIME"
                },
                "timestamp_in_long": {
                    "schemaType": "TIMESTAMP"
                }
            }
        }
    }
  • Contoh penghapusan data (DELETE)

    {
        "allMetaData": {
            "checkpoint": null,
            "record_primary_key": "id1\u0001id2",
            "source_identity": null,
            "record_primary_value": "3\u0001129",
            "dbType": "OB_MYSQL",
            "table_name": "table",
            "db": "database",
            "timestamp": "1609344671"
        },
        "prevStruct": {
            "col1": 3,
            "col2": 129,
            "col3": 2.147.483.646,
            "col4": 9.223.372.036.854.775.806,
            "col5": 10.223.372.036.854.775.806,
            "col6": 1,2222,
            "col7": 9,99999999999999909326625337248461995470488734032045693707225049331647881341002217023668530611028595157578301758491822824378438792553200763769833775473829862512856683413461939989729065436937279228852476622948659167943435544622149348072943613294167216662821737555414480159115639791276054897201420389770580351533960771506199055664889770260291710977826725024401716523031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col8": "hello world",
            "col9": "aGVsbG8gd29ybGQ=",
            "col10": 9,9999999999999990932662533724846199547048873403204569370722504933164788134100221702366853061102859515757830175849182282437843879255320076376983377547382986251285668341346193998972906543693727922885247662294865916794343554462214934807294361329416721666282173755541448015911563979127605489720142038977058035153396077150619905566488977026029171097782672502440171652353031627390652604144008597950935492433262042405635563993262949691698930975461134804791235994697938405200089317860731205010159117711704697471514344499487123311264707354172378099538737850219826145102366279591379660471881259976727356521602405329789906247763521525981391443887618575275588619928089116905061711975308467857756405810961619074331866883961080943542712559830853980002984826569445431232452392578125E-308,
            "col11": "2020-11-25",
            "col12": "00:01:02",
            "col13": "2020-11-25 00:01:02",
            "col14": "1606233662,012345",
            "__light_type": {
                "int8": {
                    "schemaType": "TINYINT"
                },
                "int16": {
                    "schemaType": "SMALLINT"
                },
                "int32": {
                    "schemaType": "INT"
                },
                "int64": {
                    "schemaType": "INT64"
                },
                "bigInt": {
                    "schemaType": "BIGINT"
                },
                "float32": {
                    "schemaType": "FLOAT"
                },
                "float64": {
                    "schemaType": "DOUBLE"
                },
                "string": {
                    "schemaType": "VARCHAR"
                },
                "bytes": {
                    "schemaType": "BLOB"
                },
                "decimal": {
                    "schemaType": "DECIMAL"
                },
                "localDate": {
                    "schemaType": "DATE"
                },
                "localTime": {
                    "schemaType": "TIME"
                },
                "localDateTime": {
                    "schemaType": "DATETIME"
                },
                "timestamp_in_long": {
                    "schemaType": "TIMESTAMP"
                }
            }
        },
        "recordType": "DELETE",
        "postStruct": null
    }
    
  • Contoh operasi DDL

    alter table connector_test.all_mysql_type_test add column c90 varchar(30) default "test" comment 'test';
    {
        "prevStruct": null,
        "postStruct": {
            "ddl": "alter table connector_test.all_mysql_type_test add column c90 varchar(30) default \"test\" comment 'test'",
            "__light_type": {
                "ddl": {
                    "schemaType": "VAR_STRING"
                }
            }
        },
        "allMetaData": {
            "checkpoint": "1671177200",
            "dbType": "OB_MYSQL",
            "storeDataSequence": null,
            "db": "connector_test",
            "timestamp": "1671177209",
            "uniqueId": null,
            "ddlType": "ALTER_TABLE",
            "record_primary_key": null,
            "source_identity": null,
            "record_primary_value": null,
            "table_name": "all_mysql_type_test"
        },
        "recordType": "DDL"
    }
    

Format pesan JSON Debezium

Saat menyinkronkan data dari tenant MySQL OceanBase Database ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi Debezium. Secara umum, hanya struct di bidang payload yang ditampilkan secara default.

  • Format di mana bidang schema dan payload ditentukan

    {
        "schema": { // Struktur yang menggambarkan bidang payload. Secara default, struktur ini tidak ditentukan.
            "type": "struct", // struct menunjukkan bahwa bidang ini berisi struktur lain.
            "optional": false, // Menentukan apakah bidang ini diperlukan.
            "fields": [
                {
                    "type": "int64", // Tipe bidang.
                    "optional": false, // Menentukan apakah bidang ini diperlukan.
                    "field": "ts_ms" // Nama bidang.
                }
            ]
        },
        "payload": {
            "op": "c", // Jenis modifikasi data. Nilai valid: c, u, d, dan HEARTBEAT. c menunjukkan insert penuh. u menunjukkan update. d menunjukkan delete. HEARTBEAT menunjukkan pesan heartbeat.
            "source": {
                "version": "", // Versi OMS.
                "connector": "OB_MYSQL", // Jenis sumber data.
                "name": "OMS", // Nilai tetap, yaitu OMS.
                "ts_ms": 0, // Timestamp dalam detik untuk modifikasi data, yang hanya tersedia untuk sinkronisasi tambahan.
                "db": "test", // Nama database yang dimodifikasi menggunakan pernyataan SQL. Untuk database OceanBase, Anda hanya dapat menentukan nama database dan mengabaikan nama tenant.
                "table": "testTab", // Nama tabel yang dimodifikasi menggunakan pernyataan SQL.
                "pos": "553132@1668496109" // Lokasi log dalam file binlog, dalam format [nama file binlog]@[offset nama file binlog].
            },
            "before": { // Gambar sebelum modifikasi.
                "column": "value" // Pasangan kunci-nilai yang berisi nilai kunci lengkap.
            },
            "after": { // Gambar setelah modifikasi.
                "column": "value" // Pasangan kunci-nilai yang berisi nilai kunci lengkap.
            },
            "ts_ms": 1.668.497.367.188 // Timestamp pemrosesan data.
        }
    }
  • Format di mana hanya bidang payload yang ditentukan

    {
        "payload": {
            "op": "c", // Jenis modifikasi data. Nilai yang valid: c, u, d, dan HEARTBEAT. c menunjukkan penyisipan penuh. u menunjukkan pembaruan. d menunjukkan penghapusan. HEARTBEAT menunjukkan pesan denyut jantung.
            "source": {
                "version": "", // Versi OMS.
                "connector": "OB_MYSQL", // Jenis sumber data.
                "name": "OMS", // Nilai tetap, yaitu OMS.
                "ts_ms": 0, // Cap waktu dalam detik untuk modifikasi data, yang hanya tersedia untuk sinkronisasi tambahan.
                "db": "test", // Nama database yang dimodifikasi menggunakan pernyataan SQL. Untuk database OceanBase, Anda hanya dapat menentukan nama database dan mengabaikan nama tenant.
                "table": "testTab", // Nama tabel yang dimodifikasi menggunakan pernyataan SQL.
                "pos": "553132@16684****" // Lokasi log dalam file binlog, dalam format [nama file binlog]@[offset nama file binlog].
            },
            "before": { // Gambar sebelum modifikasi.
                "column": "value" // Pasangan nilai-kunci yang berisi nilai kunci lengkap.
            },
            "after": { // Gambar setelah modifikasi.
                "column": "value" // Pasangan nilai-kunci yang berisi nilai kunci lengkap.
            },
            "ts_ms": 1668497367188 // Cap waktu pemrosesan data.
        }
    }

Berikut beberapa contoh:

  • Contoh penyisipan data (INSERT)

    {
        "schema": {
            "optional": false,
            "type": "STRUCT",
            "fields": [
                {
                    "field": "before",
                    "optional": false,
                    "type": "struct",
                    "fields": [
                        {
                            "field": "c01",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c02",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c03",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c04",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c05",
                            "optional": false,
                            "type": "int16"
                        },
                        {
                            "field": "c06",
                            "optional": false,
                            "type": "int16"
                        },
                        {
                            "field": "c07",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c08",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "c09",
                            "optional": false,
                            "type": "float64"
                        },
                        {
                            "field": "c10",
                            "optional": false,
                            "type": "float64"
                        },
                        {
                            "field": "c11",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c12",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c13",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c14",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c15",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c16",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c17",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c18",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c19",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c20",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c21",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c22",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c23",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "c24",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c25",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c26",
                            "optional": false,
                            "type": "bytes"
                        }
                    ]
                },
                {
                    "field": "after",
                    "optional": false,
                    "type": "struct",
                    "fields": [
                        {
                            "field": "c01",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c02",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c03",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c04",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c05",
                            "optional": false,
                            "type": "int16"
                        },
                        {
                            "field": "c06",
                            "optional": false,
                            "type": "int16"
                        },
                        {
                            "field": "c07",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c08",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "c09",
                            "optional": false,
                            "type": "float64"
                        },
                        {
                            "field": "c10",
                            "optional": false,
                            "type": "float64"
                        },
                        {
                            "field": "c11",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c12",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c13",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c14",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c15",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c16",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c17",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c18",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c19",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c20",
                            "optional": false,
                            "type": "bytes"
                        },
                        {
                            "field": "c21",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c22",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c23",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "c24",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "c25",
                            "optional": false,
                            "type": "int32"
                        },
                        {
                            "field": "c26",
                            "optional": false,
                            "type": "bytes"
                        }
                    ]
                },
                {
                    "field": "source",
                    "optional": false,
                    "type": "struct",
                    "fields": [
                        {
                            "field": "version",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "connector",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "name",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "ts_ms",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "db",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "table",
                            "optional": false,
                            "type": "string"
                        },
                        {
                            "field": "server_id",
                            "optional": false,
                            "type": "int64"
                        },
                        {
                            "field": "pos",
                            "optional": false,
                            "type": "string"
                        }
                    ]
                },
                {
                    "field": "op",
                    "optional": false,
                    "type": "string"
                },
                {
                    "field": "ts_ms",
                    "optional": false,
                    "type": "int64"
                }
            ]
        },
        "payload": {
            "op": "c",
            "source": {
                "connector": "OB_MYSQL",
                "pos": "703223@166849****",
                "name": "OMS",
                "version": "",
                "ts_ms": 1668491621000,
                "db": "test",
                "table": "table_name"
            },
            "after": {
                "c11": "a",
                "c10": 2.4212412,
                "c13": "c",
                "c12": "b",
                "c15": "65",
                "c14": "d",
                "c17": "67",
                "c16": "f",
                "c19": "690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "c18": "68",
                "c20": "6A",
                "c22": 19311,
                "c21": "2022-11-15T05:12:11Z",
                "c02": "12312",
                "c24": 1668489131000,
                "c01": 2,
                "c23": 36060000000,
                "c04": "61",
                "c26": "6B",
                "c03": "1241.41000",
                "c25": 2022,
                "c06": 141,
                "c05": 11,
                "c08": 412124124,
                "c07": 4241,
                "c09": 2.11111
            },
            "ts_ms": 1668495423594
        }
    }
  • Contoh pembaruan data (UPDATE)

    {
      "schema":{
        "optional":false,
        "type":"STRUCT",
        "fields":[
          {
            "field":"before",
            "optional":false,
            "type":"struct",
            "fields":[
              {
                "field":"c01",
                "optional":false,
                "type":"int32"
              },
              {
                "field":"c02",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c03",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c04",
                "optional":false,
                "type":"bytes"
              },
              {
                "field":"c05",
                "optional":false,
                "type":"int16"
              },
              {
                "field":"c06",
                "optional":false,
                "type":"int16"
              },
              {
                "field":"c07",
                "optional":false,
                "type":"int32"
              },
              {
                "field":"c08",
                "optional":false,
                "type":"int64"
              },
              {
                "field":"c09",
                "optional":false,
                "type":"float64"
              },
              {
                "field":"c10",
                "optional":false,
                "type":"float64"
              },
              {
                "field":"c11",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c12",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c13",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c14",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c15",
                "optional":false,
                "type":"bytes"
              },
              {
                "field":"c16",
                "optional":false,
                "type":"string"
              },
              {
                "field":"c17",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c18",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c19",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c20",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c21",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c22",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c23",
                "optional":false,
                "type":"int64"
              },
                {
                "field":"c24",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c25",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c26",
                "optional":false,
                "type":"bytes"
              }
                ]
              },
                {
                "field":"after",
                "optional":false,
                "type":"struct",
                "fields":[
                {
                "field":"c01",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c02",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c03",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c04",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c05",
                "optional":false,
                "type":"int16"
              },
                {
                "field":"c06",
                "optional":false,
                "type":"int16"
              },
                {
                "field":"c07",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c08",
                "optional":false,
                "type":"int64"
              },
                {
                "field":"c09",
                "optional":false,
                "type":"float64"
              },
                {
                "field":"c10",
                "optional":false,
                "type":"float64"
              },
                {
                "field":"c11",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c12",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c13",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c14",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c15",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c16",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c17",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c18",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c19",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c20",
                "optional":false,
                "type":"bytes"
              },
                {
                "field":"c21",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c22",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c23",
                "optional":false,
                "type":"int64"
              },
                {
                "field":"c24",
                "optional":false,
                "type":"string"
              },
                {
                "field":"c25",
                "optional":false,
                "type":"int32"
              },
                {
                "field":"c26",
                "optional":false,
                "type":"bytes"
              }
                ]
              },
                {
                "field":"source",
                "optional":false,
                "type":"struct",
                "fields":[
                {
                "field":"version",
                "optional":false,
                "type":"string"
              },
                {
                "field":"connector",
                "optional":false,
                "type":"string"
              },
                {
                "field":"name",
                "optional":false,
                "type":"string"
              },
                {
                "field":"ts_ms",
                "optional":false,
                "type":"int64"
              },
                {
                "field":"db",
                "optional":false,
                "type":"string"
              },
                {
                "field":"table",
                "optional":false,
                "type":"string"
              },
                {
                "field":"server_id",
                "optional":false,
                "type":"int64"
              },
                {
                "field":"pos",
                "optional":false,
                "type":"string"
              }
                ]
              },
                {
                "field":"op",
                "optional":false,
                "type":"string"
              },
                {
                "field":"ts_ms",
                "optional":false,
                "type":"int64"
              }
                ]
              },
                "payload":{
                "op":"u",
                "before":{
                "c11":"a",
                "c10":2.4212412,
                "c13":"c",
                "c12":"b",
                "c15":"65",
                "c14":"d",
                "c17":"67",
                "c16":"f",
                "c19":"690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "c18":"68",
                "c20":"6A",
                "c22":19311,
                "c21":"2022-11-15T05:12:11Z",
                "c02":"12312",
                "c24":1668489131000,
                "c01":1,
                "c23":36060000000,
                "c04":"61",
                "c26":"6B",
                "c03":"1241.41000",
                "c25":2022,
                "c06":141,
                "c05":11,
                "c08":412124124,
                "c07":4241,
                "c09":2.11111
              },
                "source":{
                "connector":"OB_MYSQL",
                "pos":"436999@166849****",
                "name":"OMS",
                "version":"",
                "ts_ms":1668495861000,
                "db":"test",
                "table":"table_name"
              },
                "after":{
                "c11":"aa",
                "c10":2.4212412,
                "c13":"c",
                "c12":"b",
                "c15":"65",
                "c14":"d",
                "c17":"67",
                "c16":"f",
                "c19":"690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "c18":"68",
                "c20":"6A",
                "c22":19311,
                "c21":"2022-11-15T05:12:11Z",
                "c02":"12312",
                "c24":1668489131000,
                "c01":1,
                "c23":36060000000,
                "c04":"61",
                "c26":"6B",
                "c03":"1241.41000",
                "c25":2022,
                "c06":141,
                "c05":11,
                "c08":412124124,
                "c07":4241,
                "c09":2.11111
              },
                "ts_ms":1668495906356
              }
              }
  • Contoh penghapusan data (DELETE)

    {
        "schema":{
            "optional":false,
            "type":"STRUCT",
            "fields":[
                {
                    "field":"before",
                    "optional":false,
                    "type":"struct",
                    "fields":[
                        {
                            "field":"c01",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c02",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c03",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c04",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c05",
                            "optional":false,
                            "type":"int16"
                        },
                        {
                            "field":"c06",
                            "optional":false,
                            "type":"int16"
                        },
                        {
                            "field":"c07",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c08",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"c09",
                            "optional":false,
                            "type":"float64"
                        },
                        {
                            "field":"c10",
                            "optional":false,
                            "type":"float64"
                        },
                        {
                            "field":"c11",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c12",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c13",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c14",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c15",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c16",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c17",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c18",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c19",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c20",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c21",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c22",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c23",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"c24",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c25",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c26",
                            "optional":false,
                            "type":"bytes"
                        }
                    ]
                },
                {
                    "field":"after",
                    "optional":false,
                    "type":"struct",
                    "fields":[
                        {
                            "field":"c01",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c02",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c03",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c04",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c05",
                            "optional":false,
                            "type":"int16"
                        },
                        {
                            "field":"c06",
                            "optional":false,
                            "type":"int16"
                        },
                        {
                            "field":"c07",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c08",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"c09",
                            "optional":false,
                            "type":"float64"
                        },
                        {
                            "field":"c10",
                            "optional":false,
                            "type":"float64"
                        },
                        {
                            "field":"c11",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c12",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c13",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c14",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c15",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c16",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c17",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c18",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c19",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c20",
                            "optional":false,
                            "type":"bytes"
                        },
                        {
                            "field":"c21",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c22",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c23",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"c24",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"c25",
                            "optional":false,
                            "type":"int32"
                        },
                        {
                            "field":"c26",
                            "optional":false,
                            "type":"bytes"
                        }
                    ]
                },
                {
                    "field":"source",
                    "optional":false,
                    "type":"struct",
                    "fields":[
                        {
                            "field":"version",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"connector",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"name",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"ts_ms",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"db",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"table",
                            "optional":false,
                            "type":"string"
                        },
                        {
                            "field":"server_id",
                            "optional":false,
                            "type":"int64"
                        },
                        {
                            "field":"pos",
                            "optional":false,
                            "type":"string"
                        }
                    ]
                },
                {
                    "field":"op",
                    "optional":false,
                    "type":"string"
                },
                {
                    "field":"ts_ms",
                    "optional":false,
                    "type":"int64"
                }
            ]
        },
        "payload":{
            "op":"d",
            "before":{
                "c11":"aa",
                "c10":2.4212412,
                "c13":"c",
                "c12":"b",
                "c15":"65",
                "c14":"d",
                "c17":"67",
                "c16":"f",
                "c19":"6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "c18":"68",
                "c20":"6A",
                "c22":19311,
                "c21":"2022-11-15T05:12:11Z",
                "c02":"12312",
                "c24":1668489131000,
                "c01":1,
                "c23":36060000000,
                "c04":"61",
                "c26":"6B",
                "c03":"1241.41000",
                "c25":2022,
                "c06":141,
                "c05":11,
                "c08":412124124,
                "c07":4241,
                "c09":2.11111
            },
            "source":{
                "connector":"OB_MYSQL",
                "pos":"553132@1668****",
                "name":"OMS",
                "version":"",
                "ts_ms":1668496109000,
                "db":"test",
                "table":"table_name"
            },
            "ts_ms":1668496119717
        }
    }

Format pesan JSON DebeziumFlatten

Saat menyinkronkan data dari tenant MySQL OceanBase Database ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, format pesan JSON berikut digunakan untuk metode serialisasi DebeziumFlatten. Berbeda dengan metode serialisasi Debezium, bidang schema dan payload tidak disertakan dalam metode serialisasi DebeziumFlatten.

{
    "op": "c", // Jenis modifikasi data. Nilai yang valid: c, u, d, dan HEARTBEAT. c menunjukkan penyisipan penuh. u menunjukkan pembaruan. d menunjukkan penghapusan. HEARTBEAT menunjukkan pesan denyut jantung.
    "source": {
        "version": "", // Versi OMS.
        "connector": "OB_MYSQL", // Jenis sumber data.
        "name": "OMS", // Nilai tetap, yaitu OMS.
        "ts_ms": 0, // Cap waktu dalam detik untuk modifikasi data, yang hanya tersedia untuk sinkronisasi tambahan.
        "db": "test", // Nama database yang dimodifikasi menggunakan pernyataan SQL. Untuk database OceanBase, Anda hanya dapat menentukan nama database dan mengabaikan nama tenant.
        "table": "testTab", // Nama tabel yang dimodifikasi menggunakan pernyataan SQL.
        "pos": "553132@16684****" // Lokasi log di file binlog, dalam format [nama file binlog]@[offset nama file binlog].
    },
    "before": { // Gambar sebelum modifikasi.
        "column": "value" // Pasangan nilai kunci yang berisi nilai kunci lengkap.
    },
    "after": { // Gambar setelah modifikasi.
        "column": "value" // Pasangan nilai kunci yang berisi nilai kunci lengkap.
    },
    "ts_ms": 1.668.497.367.188 // Cap waktu pemrosesan data.
}

Berikut adalah beberapa contoh:

  • Contoh penyisipan data (INSERT)

    {
       "op":"c",
       "source":{
           "connector":"OB_MYSQL",
           "pos":"703223@166849****",
           "name":"OMS",
           "version":"",
           "ts_ms":1668491621000,
           "db":"test",
           "table":"table_name"
           },
       "after":{
           "c11":"a",
           "c10":2.4212412,
           "c13":"c",
           "c12":"b",
           "c15":"65",
           "c14":"d",
           "c17":"67",
           "c16":"f",
           "c19":"690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
           "c18":"68",
           "c20":"6A",
           "c22":19311,
           "c21":"2022-11-15T05:12:11Z",
           "c02":"12312",
           "c24":1668489131000,
           "c01":2,
           "c23":36060000000,
           "c04":"61",
           "c26":"6B",
           "c03":"1241.41000",
           "c25":2022,
           "c06":141,
           "c05":11,
           "c08":412124124,
           "c07":4241,
           "c09":2.11111
           },
           "ts_ms":1668495423594
           }
  • Contoh pembaruan data (UPDATE)

    {
        "op":"u",
        "before":{
            "c11":"a",
            "c10":2.4212412,
            "c13":"c",
            "c12":"b",
            "c15":"65",
            "c14":"d",
            "c17":"67",
            "c16":"f",
            "c19":"69000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
            "c18":"68",
            "c20":"6A",
            "c22":19311,
            "c21":"2022-11-15T05:12:11Z",
            "c02":"12312",
            "c24":1668489131000,
            "c01":1,
            "c23":36060000000,
            "c04":"61",
            "c26":"6B",
            "c03":"1241.41000",
            "c25":2022,
            "c06":141,
            "c05":11,
            "c08":412124124,
            "c07":4241,
            "c09":2.11111
            },
        "source":{
            "connector":"OB_MYSQL",
            "pos":"436999@166849****",
            "name":"OMS",
            "version":"",
            "ts_ms":1668495861000,
            "db":"test",
            "table":"table_name"
            },
        "after":{
            "c11":"aa",
            "c10":2.4212412,
            "c13":"c",
            "c12":"b",
            "c15":"65",
            "c14":"d",
            "c17":"67",
            "c16":"f",
            "c19":"690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
            "c18":"68",
            "c20":"6A",
            "c22":19311,
            "c21":"2022-11-15T05:12:11Z",
            "c02":"12312",
            "c24":1668489131000,
            "c01":1,
            "c23":36060000000,
            "c04":"61",
            "c26":"6B",
            "c03":"1241.41000",
            "c25":2022,
            "c06":141,
            "c05":11,
            "c08":412124124,
            "c07":4241,
            "c09":2.11111
            },
            "ts_ms":1668495906356
            }
  • Contoh penghapusan data (DELETE)

    {
        "op":"d",
        "before":{
            "c11":"aa",
            "c10":2.4212412,
            "c13":"c",
            "c12":"b",
            "c15":"65",
            "c14":"d",
            "c17":"67",
            "c16":"f",
            "c19":"69000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
            "c18":"68",
            "c20":"6A",
            "c22":19311,
            "c21":"2022-11-15T05:12:11Z",
            "c02":"12312",
            "c24":1668489131000,
            "c01":1,
            "c23":36060000000,
            "c04":"61",
            "c26":"6B",
            "c03":"1241.41000",
            "c25":2022,
            "c06":141,
            "c05":11,
            "c08":412124124,
            "c07":4241,
            "c09":2.11111
            },
        "source":{
            "connector":"OB_MYSQL",
            "pos":"553132@1668****",
            "name":"OMS",
            "version":"",
            "ts_ms":1668496109000,
            "db":"test",
            "table":"table_name"
        },
        "ts_ms":1668496119717
    }

Format pesan JSON DebeziumSmt

DebeziumSmt adalah metode konfigurasi yang disediakan oleh Debezium untuk serialisasi. Metode ini mentransformasi dan memproses setiap pesan menggunakan transformasi pesan tunggal (SMT) berbasis perataan event. Saat menyinkronkan data dari tenant MySQL di OceanBase Database ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, hanya pasangan key:value di bagian after dari format pesan JSON untuk metode serialisasi DebeziumSmt yang ditampilkan.

Berikut adalah contoh penggunaan metode serialisasi Debezium untuk memperbarui data:

{
    "op": "u",
    "source": {
        "connector": "OB_MYSQL",
        "name": "OMS"
    },
    "ts_ms": 1668496119717,
    "before": {
        "field1": "before_value1",
        "field2": "before_value2"
    },
    "after": {
        "field1": "after_value1",
        "field2": "after_value2"
    }
}

SMT menyederhanakan format pesan sebelumnya. Format pesan JSON yang disederhanakan dengan metode serialisasi DebeziumSmt adalah sebagai berikut:

{
    "field1": "after_value1",
    "field2": "after_value2"
}

Berikut adalah beberapa contoh penggunaannya:

  • Contoh penyisipan data (INSERT)

    {
        "field1": "after_value1",
        "field2": "after_value2",
        "__deleted": "false"
    }
  • Contoh pembaruan data (UPDATE)

    {
        "field1": "after_value1",
        "field2": "after_value2",
        "__deleted": "false"
    }
  • Contoh penghapusan data (DELETE)

    {
        "field1": "after_value1",
        "field2": "after_value2",
        "__deleted": "true"
    }

Format pesan JSON Avro

Saat menyinkronkan data dari tenant MySQL OceanBase Database ke instance Kafka, format pesan JSON berikut digunakan untuk metode serialisasi Avro:

  • Migrasi penuh

    {
        "version": 1,
        "id": 0,
        "sourceTimestamp": 1702371565, // Timestamp checkpoint keamanan.
        "sourcePosition": "", // Untuk migrasi penuh, bidang sourcePosition dan safeSourcePosition kosong.
        "safeSourcePosition": "",
        "sourceTxid": "",
        "source": {
            "sourceType": "MySQL", // Nilai tetap, yaitu MySQL.
            "version": "OBMySQL" // Nilai tetap, yaitu OBMySQL.
        },
        "operation": "INIT", // Jenis operasi untuk migrasi penuh adalah INIT.
        "objectName": "test***",
        "processTimestamps": [
            1702371565238
        ], // Hanya waktu pengiriman yang diberikan.
        "tags": {
            "pk_uk_info": "{\"PRIMARY\":[\"id\"]}" // Hanya tipe kunci utama yang diberikan.
        },
        "fields": [
            {
                "name": "id",
                "dataTypeNumber": 246
            }, // Tipe data setiap kolom.
            {
                "name": "bid",
                "dataTypeNumber": 3
            },
            {
                "name": "name",
                "dataTypeNumber": 15
            },
            {
                "name": "address",
                "dataTypeNumber": 254
            }
        ],
        "beforeImages": null, // Gambar sebelum migrasi penuh kosong.
        "afterImages": [ // Gambar setelah migrasi penuh. Presisi bidang bertipe INTEGER atau FLOAT selalu 8. Skala selalu 64.
            {
                "value": "1",
                "precision": 1,
                "scale": 0
            },
            {
                "precision": 8,
                "value": "11"
            },
            {
                "charset": "utf8mb4",
                "value": {
                    "bytes": "yyy"
                }
            },
            null
        ]
    }
  • Operasi DML inkremental sinkronisasi

    • Contoh penyisipan data (INSERT)

      {
        "version": 1, 
        "id": 170236922143600000, 
        "sourceTimestamp": 1702369092, 
        "sourcePosition": "1702369080",  // Checkpoint untuk tenant MySQL OceanBase Database.
        "safeSourcePosition": "1702369080", // Checkpoint untuk tenant MySQL OceanBase Database.
        "sourceTxid": "",                
        "source": {
          "sourceType": "MySQL", 
          "version": "OBMySQL"
        }, 
        "operation": "INSERT", 
        "objectName": "test***", 
        "processTimestamps": [1702369221480],  
        "tags": {
          "pk_uk_info": "{\"PRIMARY\":[\"id\"]}"
        }, 
        "fields": [
          {"name": "id", "dataTypeNumber": 8},  
          {"name": "bid", "dataTypeNumber": 3}, 
          {"name": "name", "dataTypeNumber": 15}
        ], 
        "beforeImages": null,                // Gambar sebelum operasi INSERT kosong.
        "afterImages": [
          {"precision": 8, "value": "2"},    
          {"precision": 8, "value": "12"}, 
          {"charset": "utf8mb4", "value": {"bytes": "xxx"}
          }
        ]
      }
    • Contoh pembaruan data (UPDATE)

      {
        "version": 1,
        "id": 170236975822100001, 
        "sourceTimestamp": 1702369757, 
        "sourcePosition": "1702369756", 
        "safeSourcePosition": "1702369756", 
        "sourceTxid": "", 
        "source": {
          "sourceType": "MySQL", 
          "version": "OBMySQL"
        }, 
        "operation": "UPDATE", 
        "objectName": "test***", 
        "processTimestamps": [1702369758237], 
        "tags": {
          "pk_uk_info": "{\"PRIMARY\":[\"id\"]}"
        }, 
        "fields": [
          {"name": "id", "dataTypeNumber": 8}, 
          {"name": "bid", "dataTypeNumber": 3}, 
          {"name": "name", "dataTypeNumber": 15}
        ], 
        "beforeImages": [   // Gambar sebelum dan sesudah operasi UPDATE.
          {"precision": 8, "value": "3"}, 
          {"precision": 8, "value": "22"}, 
          {"charset": "utf8mb4", "value": {"bytes": "xxx"}}
        ], 
        "afterImages": [
          {"precision": 8, "value": "3"}, 
          {"precision": 8, "value": "44"}, 
          {"charset": "utf8mb4", "value": {"bytes": "xxx"}}
        ]
      }
    • Contoh penghapusan data (DELETE)

      {
        "version": 1, 
        "id": 170236976527500000, 
        "sourceTimestamp": 1702369764, 
        "sourcePosition": "1702369763", 
        "safeSourcePosition": "1702369763", 
        "sourceTxid": "", 
        "source": {
          "sourceType": "MySQL", 
          "version": "OBMySQL"
        }, 
        "operation": "DELETE", 
        "objectName": "test***", 
        "processTimestamps": [1702369765287], 
        "tags": {
          "pk_uk_info": "{\"PRIMARY\":[\"id\"]}"
        }, 
        "fields": [
          {"name": "id", "dataTypeNumber": 8}, 
          {"name": "bid", "dataTypeNumber": 3}, 
          {"name": "name", "dataTypeNumber": 15}
        ], 
        "beforeImages": [
          {"precision": 8, "value": "3"}, 
          {"precision": 8, "value": "44"}, 
          {"charset": "utf8mb4", "value": {"bytes": "xxx"}}
        ], 
        "afterImages": null // Gambar setelah operasi DELETE kosong.
      }
  • Sinkronisasi operasi DDL inkremental

    {
        "version": 1,
        "id": 170236979372400000,
        "sourceTimestamp": 1702369793,
        "sourcePosition": "1702369792",
        "safeSourcePosition": "1702369792",
        "sourceTxid": "",
        "source": {
            "sourceType": "MySQL",
            "version": "OBMySQL"
        },
        "operation": "DDL",
        "objectName": "test***",
        "processTimestamps": [
            1702369794543
        ],
        "tags": {},
        "fields": null, // Nilai fields dan beforeImages adalah null untuk sinkronisasi operasi DDL inkremental. 
        "beforeImages": null,
        "afterImages": "alter table multi_db_multi_tbl add column address char(20) default null" // Nilai afterImages bertipe STRING adalah pernyataan DDL. 
    }

Format data yang digunakan ketika data ditransmisikan dari OceanBase Database ke sistem antrian pesan

Perhatikan hal-hal berikut saat menyinkronkan data dari OceanBase Database ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ:

  • Tabel berikut menjelaskan pemetaan tipe data untuk tenant MySQL dan Oracle dari OceanBase Database saat metode serialisasi adalah Default, Canal, DataWorks (DataWorks 2.0 didukung), SharePlex, atau DefaultExtendColumnType.

    • Tenant MySQL dari OceanBase Database

      Tipe data

      Tipe yang dipetakan

      Deskripsi

      TINYINT

      SMALLINT

      MEDIUMINT

      INT

      INTEGER

      YEAR

      BOOL

      BOOLEAN

      Long

      Bilangan bulat yang lebih pendek dari 64 digit.

      Notasi ilmiah tidak digunakan untuk nilai normal seperti 1000.

      Untuk nilai BOOL atau BOOLEAN, true dikonversi menjadi 1 dan false dikonversi menjadi 0.

      DECIMAL

      NUMERIC

      BigDecimal

      Angka desimal presisi tepat dan bilangan bulat lebih panjang dari 64 digit.

      Bilangan bulat ditampilkan tanpa titik desimal atau tempat desimal.

      Angka desimal ditampilkan berdasarkan data yang dilewatkan ke instance database tanpa menghapus nol di akhir. Notasi ilmiah digunakan.

      FLOAT

      DOUBLE

      Ganda

      Bilangan floating-point.

      Jumlah digit signifikan ditentukan berdasarkan tipe data sumber. Jika tipe data sumber adalah FLOAT, nilai yang dikonversi memiliki 7 digit signifikan. Jika tipe data sumber adalah DOUBLE, nilai yang dikonversi memiliki 16 digit signifikan.

      CHAR

      VARCHAR

      TINYTEXT

      TEXT

      MEDIUMTEXT

      LONGTEXT

      ENUM

      SET

      String

      Tipe string.

      TINYBLOB

      BLOB

      MEDIUMBLOB

      LONGBLOB

      BINARY

      VARBINARY

      BIT

      Byte

      Array byte. Secara default, array byte ditampilkan dalam bentuk string yang dienkripsi Base64. Saat metode serialisasi adalah Canal, array byte ditampilkan dalam bentuk string yang dienkripsi Latin1 secara default. Dalam hal ini, data tipe BIT diubah menjadi angka.

      Catatan

      Untuk tipe data BIT dengan panjang tetap, database tujuan menghapus nol pada bit orde tinggi setelah menerima array byte untuk sinkronisasi tambahan, tetapi tidak melakukannya untuk sinkronisasi penuh. Akibatnya, string yang dienkripsi Base64 yang ditampilkan dalam kedua skenario tersebut mungkin berbeda. Namun, hasil sebenarnya yang diperoleh setelah didekode tetap konsisten.

      TANGGAL

      Tanggal

      Tipe DATE dalam format YYYY-MM-DD. Jika nilainya tidak valid, string asli akan ditampilkan.

      WAKTU

      Waktu

      Tipe TIME dalam format HH:mm:ss[.nnnnnnnnn].

      Bagian detik pecahan dapat berisi maksimal 9 digit. Nol di akhir bagian detik pecahan tidak ditampilkan. Jika nilainya tidak valid, string asli akan ditampilkan.

      DATETIME

      DateTime

      Tipe DATETIME dalam format YYYY-MM-DD HH:mm:ss[.nnnnnnnnn] [zoneId], termasuk zona waktu.

      Bagian detik pecahan dapat berisi maksimal 9 digit. Nol di akhir bagian detik pecahan tidak ditampilkan. Jika nilainya tidak valid, string asli akan ditampilkan.

      TIMESTAMP

      Cap waktu

      Tipe TIMESTAMP, dalam format [timestamp tingkat detik][.nnnnnnnnn]. Saat metode serialisasi adalah Canal, formatnya adalah YYYY-MM-DD HH:mm:ss[.nnnnnnnnn].

      Bagian detik pecahan dapat berisi maksimal 9 digit. Nol di akhir bagian detik pecahan tidak ditampilkan. Jika waktu tidak valid, 0000-00-00 00:00:00 akan ditampilkan.

    • Tenant Oracle dari OceanBase Database

      Tipe data

      Tipe yang dipetakan

      Deskripsi

      INTEGER

      Long

      Bilangan bulat yang lebih pendek dari 64 digit.

      Notasi ilmiah tidak digunakan untuk nilai normal seperti 1000.

      NUMBER

      FLOAT

      BigDecimal

      Angka desimal presisi tepat dan bilangan bulat lebih panjang dari 64 digit.

      BINARY_FLOAT BINARY_DOUBLE

      Ganda

      Bilangan titik mengambang.

      Jumlah digit signifikan ditentukan berdasarkan tipe data sumber. Jika tipe data sumber adalah FLOAT, nilai yang dikonversi memiliki 7 digit signifikan. Jika tipe data sumber adalah DOUBLE, nilai yang dikonversi memiliki 16 digit signifikan.

      VARCHAR2

      NVARCHAR2

      INTERVAL TAHUN KE BULAN

      INTERVAL HARI KE DETIK

      CLOB

      NCLOB

      ROWID

      UROWID

      String

      Tipe string.

      BLOB

      BFILE

      RAW

      Bytes

      Array byte.

      Secara default, array byte ditampilkan dalam bentuk string yang dienkripsi Base64.

      TANGGAL

      WAKTU CAP

      WAKTU CAP DENGAN ZONA WAKTU

      WAKTU CAP DENGAN ZONA WAKTU LOKAL

      DateTime

      Tipe DATETIME dalam format YYYY-MM-DD HH:mm:ss[.nnnnnnnnn] [zoneId], termasuk zona waktu.

      Bagian detik pecahan dapat berisi maksimal 9 digit. Nol di akhir bagian detik pecahan tidak ditampilkan. Jika nilainya tidak valid, string asli akan ditampilkan.

  • Jika metode serialisasi adalah Debezium, pemetaan tipe data untuk tenant MySQL OceanBase Database dijelaskan dalam tabel berikut.

    Penting

    Ketika memigrasikan data dari tenant Oracle OceanBase Database ke Kafka, DataHub (tipe BLOB), atau instance RocketMQ, metode serialisasi Debezium tidak didukung.

    Tipe data

    Tipe yang dipetakan

    Deskripsi

    BOOLEAN

    BOOL

    BOOLEAN

    Nilai valid: true dan false.

    TINYINT

    SMALLINT

    MEDIUMINT

    INT/INTEGER

    BIGINT

    YEAR

    LONG

    Bilangan bulat yang berkisar dari -263 hingga 263.

    BIGINT

    STRING

    String yang menampilkan data secara lengkap.

    FLOAT

    DOUBLE

    DOUBLE

    Bilangan floating-point.

    DECIMAL

    NUMERIC

    STRING

    String yang menampilkan data secara lengkap. Angka desimal ditampilkan berdasarkan data yang dilewatkan ke instance database tanpa menghapus nol di akhir. Notasi ilmiah digunakan.

    BIT

    BINARY

    VARBINARY

    TINYBLOB

    BLOB

    MEDIUMBLOB

    LONGBLOB

    BYTES

    Array byte yang dikodekan Base16.

    CHAR

    VARCHAR

    TINYTEXT

    TEXT

    MEDIUMTEXT

    LONGTEXT

    ENUM

    SET

    STRING

    Tipe string.

    TIMESTAMP

    STRING

    String timestamp dalam format YYYY-MM-DDTHH:mm:ss[.nnnnnnnnn]Z. Zona waktu adalah UTC+0.

    DATE

    LONG

    Jumlah hari sejak 1 Januari 1970.

    TIME

    LONG

    Nilai temporal, dalam mikrodetik, sejak 00:00:00, tidak termasuk zona waktu.

    DATETIME

    LONG

    Nilai temporal, dalam milidetik, sejak 1970-01-01 00:00:00, tidak termasuk zona waktu.

  • Jika metode serialisasi adalah Avro, pemetaan tipe data untuk tenant MySQL OceanBase Database dijelaskan dalam tabel berikut.

    Penting

    Metode serialisasi Avro hanya didukung saat menyinkronkan data dari tenant MySQL OceanBase Database ke instance Kafka.

    Tipe data

    Tipe yang dipetakan

    TINYINT

    BOOLEAN

    SMALLINT

    MEDIUMINT

    INT

    BIGINT

    BIT

    INTEGER

    FLOAT

    DOUBLE

    FLOAT

    DECIMAL

    NUMERIC

    DECIMAL

    VARCHAR

    CHAR

    TINYTEXT

    MEDIUMTEXT

    LONGTEXT

    TEXT

    CHARACTER

    BINARY

    VARBINARY

    TINYBLOB

    MEDIUMBLOB

    LONGBLOB

    BLOB

    BinaryObject

    TIMESTAMP

    TimestampObject

    Catatan

    Untuk migrasi penuh dan sinkronisasi inkremental, nilai bertipe TIMESTAMP akan dikonversi menjadi timestamp. -9223372022400L tidak valid.

    Anda dapat memanggil metode Instant.ofEpochSecond(ts, nanos) dari Java untuk mendapatkan waktu yang benar, kecuali waktu yang tidak valid.

    DATE

    TIME

    DATETIME

    YEAR

    DATETIME

    JSON

    ENUM

    SET

    TextObject

    GEOMETRY

    TextGeometry

    Catatan

    Saat ini, layanan transmisi data menggunakan format EWKT untuk transmisi data transparan. Oleh karena itu, tipe yang dipetakan adalah TextGeometry.