Data Transmission Service (DTS) vous permet de choisir un format de stockage lors de la synchronisation ou de la migration de données vers une file d'attente de messages, telle que Kafka ou RocketMQ. Cette rubrique décrit les formats de données pour vous aider à les analyser.
Formats de stockage des données
DTS prend en charge les trois formats de stockage suivants pour les données écrites dans une file d'attente de messages :
DTS Avro : format de sérialisation qui convertit les structures de données ou les objets dans un format facile à stocker ou à transmettre.
Shareplex Json : lorsque le logiciel de réplication de données SharePlex lit les données depuis une base de données source et les écrit dans une file d'attente de messages, celles-ci sont stockées au format Shareplex Json.
Canal Json : Canal analyse les journaux incrémentiels d'une base de données et transmet les données incrémentielles à une file d'attente de messages. Les données sont stockées au format Canal Json.
DTS Avro
Analysez les données selon la définition du schéma DTS Avro. Pour plus d'informations, consultez la définition du schéma DTS Avro et l'exemple de désérialisation DTS Avro.
Au format DTS Avro, les instructions DDL sont de type String.
Shareplex Json
Description des paramètres
|
Paramètre |
Description |
|
|
L'heure de validation de la transaction dans la base de données. Le format est yyyy-MM-ddTHH:mm:ssZ (UTC). |
|
|
L'ID de l'utilisateur ayant validé la transaction. |
|
|
Le type d'opération sur les données. Les valeurs possibles sont INSERT, UPDATE, DELETE, TRUNCATE, DROP COLUMN, UPDATE BEFORE et UPDATE AFTER. |
|
|
Numéro de changement système (SCN). Il identifie la version d'une transaction validée à un instant donné dans la base de données. Chaque transaction validée reçoit un SCN unique. |
|
|
Valeur d'adresse relativement unique permettant de localiser un enregistrement dans la base de données. |
|
|
L'ID de la transaction. |
|
|
Le numéro ordinal de l'opération au sein de la transaction. La valeur commence à 1. |
|
|
Le nombre total d'opérations dans la transaction. |
|
|
Le nom de la table. |
|
|
L'index de l'opération au sein de la transaction. Le format est |
|
|
L'heure de validation de la transaction dans la base de données de destination. |
Exemples
Insertion de données
{
"meta": {
"time": "2017-06-16T14:24:34",
"userid": 84,
"op": "ins",
"scn": "14589063118712",
"rowid": "AAATGpAAIAAItcIAAA",
"trans": "7.0.411499",
"seq": 1,
"size": 11,
"table": "CL_BIZ1.MIO_LOG",
"idx": "1/11",
"posttime": "2017-06-16T14:33:52"
},
"data": {
"MIO_LOG_ID": "32539737"
}
}
Mise à jour des données
{
"meta": {
"time": "2017-06-16T15:38:13",
"userid": 84,
"op": "upd",
"table": "CL_BIZ1.MIO_LOG"
….
},
"data": {
"CNTR_NO": "1171201606"
},
"key": {
"MIO_LOG_ID": "32537893",
"PLNMIO_REC_ID": "31557806",
"POL_CODE": null,
"CNTR_TYPE": null,
"CNTR_NO": "1171201606syui26"
}
}
Suppression de données
{
"meta": {
"time": "2017-06-16T15:51:35",
"userid": 84,
"op": "del",
},
"data": {
"MIO_LOG_ID": "32539739",
"PLNMIO_REC_ID": "31557806",
"POL_CODE": null,
"CNTR_TYPE": null,
"CG_NO": null
}
}
Canal Json
Si vous activez l'option Split message delivery after partition key update, Kafka délivre un message DELETE et un message INSERT lorsqu'une clé de partition est modifiée. Kafka sélectionne la partition pour chaque message en fonction de sa valeur de clé de partition respective.
Exemple : la clé de partition id a pour valeur 1. Le message est délivré à partition-1. La liste suivante décrit les différences avant et après l'activation de l'option Split message delivery after partition key update.
Activé : lorsque vous exécutez la commande
UPDATE SET id = 2 WHERE id = 1dans la base de données source, un messageDELETEavecid=1est délivré àpartition-1, et un messageINSERTavecid=2est délivré àpartition-2.Désactivé : un seul message
UPDATEest délivré àpartition-1. L'opérationUPDATEsélectionne la partition pour la livraison en fonction de la valeur avant la modification.
Description des métriques
|
Paramètre |
Description |
|
|
Le nom de la base de données. |
|
|
L'heure d'exécution de l'opération dans la base de données source. Il s'agit d'un horodatage UNIX de 13 chiffres en millisecondes. Remarque
|
|
|
Le numéro de série de l'opération. Remarque
Il est généré à partir de l'horodatage et d'un décalage interne DTS. Il peut vous aider à déterminer l'ordre des enregistrements. |
|
|
Indique si l'opération est une opération DDL.
|
|
|
Le type de données du champ. Remarque
Les paramètres des types de données, tels que la précision, ne sont pas pris en charge. |
|
|
Les données avant ou après la modification. Remarque
Pour les instances de synchronisation ou de migration créées avant le 20 mars 2022, la valeur de old correspond aux données après la modification, et la valeur de |
|
|
Le nom de la clé primaire. |
|
|
L'instruction SQL. |
|
|
Le type de champ transformé. La valeur est identique à celle de dataTypeNumber. Pour plus d'informations, consultez la section Correspondance entre les types de champs et les valeurs dataTypeNumber. |
|
|
Le nom de la table. |
|
|
L'heure à laquelle l'opération a commencé à écrire les données dans la base de données de destination. Il s'agit d'un horodatage UNIX de 13 chiffres en millisecondes. Remarque
Utilisez un moteur de recherche pour trouver un outil de conversion d'horodatage UNIX. |
|
|
Le type d'opération, tel que DELETE, UPDATE ou INSERT. Remarque
Pour les tâches de synchronisation ou de migration de données complètes, la valeur est fixée à INIT. |
|
|
Identifiant global de transaction (GTID). Un GTID est globalement unique. Chaque transaction correspond à un GTID. Remarque
DTS ne prend pas en charge la synchronisation du champ GTID. La valeur de ce champ est NULL par défaut. |
Exemples
Mise à jour des données
Pour les instances de synchronisation ou de migration créées avant le 20 mars 2022, lorsqu'une instruction DELETE d'une table source est synchronisée ou migrée vers Kafka, le champ old contient les données et le champ data est nul. Pour s'aligner sur la communauté open source, pour les instances créées ou redémarrées le 20 mars 2022 ou ultérieurement, le champ data contient les données et le champ old est nul.
Instances de synchronisation ou de migration créées avant le 20 mars 2022
{
"old": [
{
"shipping_type": "aaa"
}
],
"database": "dbname",
"es": 1600161894000,
"id": 58,
"isDdl": false,
"mysqlType": {
"id": "bigint",
"shipping_type": "varchar"
},
"pkNames": [
"id"
],
"sql": "",
"sqlType": {
"id": -5,
"shipping_type": 12
},
"table": "tablename",
"ts": 1600161894771,
"type": "DELETE"
}
Instances de synchronisation ou de migration créées ou redémarrées le 20 mars 2022 ou ultérieurement
{
"data": [
{
"id": "500000287",
"shipping_type": null
}
],
"database": "dbname",
"es": 1600161894000,
"id": 58,
"isDdl": false,
"mysqlType": {
"id": "bigint",
"shipping_type": "varchar"
},
"pkNames": [
"id"
],
"sql": "",
"sqlType": {
"id": -5,
"shipping_type": 12
},
"table": "tablename",
"ts": 1600161894771,
"type": "DELETE"
}
Opération DDL
{
"database":"dbname", // The name of the database for synchronization or migration.
"es":1600161894000, // The time when the source data was written to the binary log.
"id":58, // The offset in the DTS cache.
"isDdl":true, // Specifies whether to synchronize or migrate DDL statements.
"sql":"eg:createxxx", // The DDL statement from the binary log.
"table":"tablename", // The name of the table for synchronization or migration.
"ts":1600161894771, // The time when DTS wrote the data to the destination.
"type":"DDL"
}