Data Integration de DataWorks prend en charge DM (Dameng) en tant que source et destination pour la synchronisation par lots hors ligne. Utilisez DM Reader pour extraire les données des bases de données DM et DM Writer pour les charger dans ces bases.
Fonctionnalités
| Fonctionnalité | DM Reader | DM Writer |
|---|---|---|
| Synchronisation hors ligne (par lots) | Oui | Oui |
| Lecture à partir de vues | Oui | — |
| Élagage des colonnes | Oui | — |
| Réorganisation des colonnes | Oui | — |
Lecture parallèle (splitPk) |
Oui (colonnes entières uniquement) | — |
Synchronisation incrémentielle (where) |
Oui | — |
| Exécution SQL préalable | Oui | Oui |
| Exécution SQL postérieure | — | Oui |
| Groupes de ressources Serverless | Oui | Oui |
| Groupes de ressources exclusifs pour Data Integration | Oui | Oui |
Types de champs pris en charge
DM Reader et DM Writer prennent en charge la plupart des types de données courants des bases de données relationnelles. Le tableau suivant répertorie les types de données DM que DM Reader peut convertir. Les types non pris en charge génèrent une erreur de lecture : vérifiez votre schéma avant de configurer une tâche de synchronisation.
| Catégorie | Types de données DM |
|---|---|
| Entier | INT, TINYINT, SMALLINT, BIGINT |
| Virgule flottante | REAL, FLOAT, DOUBLE, NUMBER, DECIMAL |
| Chaîne | CHAR, VARCHAR, LONGVARCHAR, TEXT |
| Date et heure | DATE, DATETIME, TIMESTAMP, TIME |
| Booléen | BIT |
| Binaire | BINARY, VARBINARY, BLOB |
Configuration d'une tâche de synchronisation
Synchronisation hors ligne d'une table unique
Configurez une tâche via l'interface utilisateur sans code ou l'éditeur de code :
Interface utilisateur sans code : Configuration d'une tâche dans l'interface utilisateur sans code
Éditeur de code : Configuration d'une tâche dans l'éditeur de code
Pour la référence complète du script et les descriptions des paramètres, consultez Référence du script.
Synchronisation hors ligne d'une base de données entière
Consultez Configuration d'une tâche de synchronisation en temps réel pour une base de données entière.
Référence du script
Lors de la configuration d'une tâche de synchronisation par lots dans l'éditeur de code, utilisez le format de script unifié. Les sections suivantes détaillent les paramètres spécifiques à DM pour Reader et Writer.
Reader
Exemple de script
{
"type": "job",
"version": "2.0",
"order": {
"hops": [
{ "from": "Reader", "to": "Writer" }
]
},
"setting": {
"errorLimit": { "record": "0" },
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"steps": [
{
"category": "reader",
"name": "Reader",
"stepType": "dm",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": ["*"],
"preSql": ["delete from XXX;"],
"fetchSize": 2048
}
},
{
"category": "writer",
"name": "Writer",
"stepType": "stream",
"parameter": {}
}
]
}
Paramètres de Reader
| Paramètre | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|
datasource |
Oui | — | Nom de la source de données DM. Consultez Configuration d'une source de données DM. |
table |
Oui | — | Table source des données. |
column |
Oui | — | Colonnes à synchroniser, sous forme de tableau JSON. Utilisez ["*"] pour toutes les colonnes. Prend en charge l'élagage des colonnes, la réorganisation des colonnes et les constantes (entier, chaîne, null, expression de fonction, virgule flottante, booléen). |
splitPk |
Non | Vide | Colonne utilisée pour diviser les données afin de permettre des lectures parallèles. Définissez ce paramètre sur la clé primaire pour une distribution uniforme et pour éviter les points chauds de données. Seules les colonnes entières sont prises en charge ; les types virgule flottante, chaîne, date et autres provoquent une erreur. Si ce paramètre n'est pas défini, la table est lue avec un seul canal. |
where |
Non | — | Condition de filtre SQL ajoutée à la requête, par exemple gmt_create>$bizdate pour la synchronisation incrémentielle, ou limit 10 pour les tests. Si ce paramètre n'est pas défini, toutes les lignes sont lues. |
querySql |
Non | — | Requête SQL personnalisée, par exemple select a,b from table_a join table_b on table_a.id = table_b.id. Lorsqu'il est défini, les paramètres column, table et where sont ignorés. |
fetchSize |
Non | 1 024 | Nombre de lignes récupérées par lot. Des valeurs plus élevées réduisent les allers-retours réseau et améliorent le débit. Les valeurs supérieures à 2 048 peuvent provoquer une erreur de mémoire insuffisante (OOM). |
preSql |
Non | — | Instruction SQL exécutée avant le démarrage de la tâche de synchronisation. Une seule instruction est prise en charge. |
Writer
Exemple de script
{
"type": "job",
"version": "2.0",
"order": {
"hops": [
{ "from": "Reader", "to": "Writer" }
]
},
"setting": {
"errorLimit": { "record": "" },
"speed": {
"throttle": true,
"concurrent": 2,
"mbps": "12"
}
},
"steps": [
{
"category": "reader",
"name": "Reader",
"stepType": "oracle",
"parameter": {
"datasource": "aaa",
"column": ["PROD_ID", "name"],
"where": "",
"splitPk": "",
"encoding": "UTF-8",
"table": "PENGXI.SALES"
}
},
{
"category": "writer",
"name": "Writer",
"stepType": "dm",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": ["id", "name"],
"preSql": ["delete from XXX;"]
}
}
]
}
Paramètres de Writer
| Paramètre | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|
datasource |
Oui | — | Nom de la source de données DM. Consultez Configuration d'une source de données DM. |
table |
Oui | — | Table de destination. Si le schéma de la table diffère du nom d'utilisateur dans la configuration de la source de données, utilisez le format schema.table. |
column |
Oui | — | Colonnes de destination vers lesquelles écrire, séparées par des virgules. N'utilisez pas les paramètres de colonne par défaut. |
preSql |
Non | — | Instruction SQL exécutée avant le démarrage de la tâche de synchronisation, par exemple pour purger les anciennes données. Une seule instruction est prise en charge ; plusieurs instructions désactivent la prise en charge des transactions. |
postSql |
Non | — | Instruction SQL exécutée après la fin de la tâche de synchronisation, par exemple pour ajouter un horodatage. Une seule instruction est prise en charge ; plusieurs instructions désactivent la prise en charge des transactions. |
batchSize |
Non | 1 024 | Nombre de lignes écrites par lot. Des valeurs plus élevées réduisent les interactions réseau et améliorent le débit. Des valeurs trop importantes peuvent provoquer une erreur OOM. |