La source de données DB2 connecte DataWorks aux bases de données IBM DB2 pour la synchronisation hors ligne des données. Utilisez-la pour lire et écrire des données dans DB2 lors de tâches de synchronisation par lots.
Versions prises en charge
DB2 Reader et DB2 Writer utilisent le pilote IBM Data Server Driver for JDBC and SQLJ version 4.11.77. Pour consulter la correspondance entre les versions du pilote DB2 et le service de base de données, reportez-vous à la documentation officielle.
Fonctionnalités prises en charge
|
Fonctionnalité |
Prise en charge |
|
Lecture hors ligne (synchronisation complète) |
Oui |
|
Écriture hors ligne (synchronisation complète) |
Oui |
|
Lecture depuis des vues |
Oui |
|
Synchronisation incrémentielle |
Oui (via un filtre |
|
Chiffrement AES |
Non |
|
Groupes de ressources serverless |
Oui |
|
Groupes de ressources exclusifs pour Data Integration |
Oui |
|
Groupes de ressources publics |
Non |
|
Groupes de ressources personnalisés |
Non |
Types de champs pris en charge
DB2 Reader et DB2 Writer prennent en charge les types de données DB2 suivants pour les opérations de lecture et d'écriture hors ligne. Vérifiez vos types de données avant de configurer une tâche de synchronisation.
|
Catégorie de type |
Types de données DB2 |
|
Types entiers |
SMALLINT |
|
Types à virgule flottante |
DECIMAL, REAL, DOUBLE |
|
Types chaîne |
CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB |
|
Types date et heure |
DATE, TIME, TIMESTAMP |
|
Types booléens |
Aucun |
|
Types binaires |
BLOB |
Limitations
Groupes de ressources : DB2 Reader et DB2 Writer prennent en charge les groupes de ressources serverless et les groupes de ressources exclusifs pour Data Integration. Les groupes de ressources publics et les groupes de ressources personnalisés ne sont pas pris en charge.
-
Comportement d'écriture : DB2 Writer insère les données à l'aide d'instructions
insert into. En cas de conflit avec une clé primaire ou un index unique, les lignes concernées ne sont pas écrites. Pour optimiser les performances, DB2 Writer utilisePreparedStatement + Batchavec l'optionrewriteBatchedStatements=true, mettant les données en mémoire tampon dans le contexte du thread et envoyant une requête d'écriture lorsque le seuil configuré est atteint.La tâche de synchronisation nécessite au minimum l'autorisation
insert into. Des autorisations supplémentaires peuvent être requises selon les instructions SQL configurées dans les paramètrespreSqletpostSql. Chiffrement : L'algorithme de chiffrement AES de DB2 n'est pas pris en charge.
Ajout d'une source de données
Ajoutez la source de données DB2 à DataWorks avant de développer une tâche de synchronisation. Suivez les instructions fournies dans la rubrique Gestion des sources de données. Les descriptions des paramètres sont disponibles dans la console DataWorks lors de l'ajout de la source de données.
Développement d'une tâche de synchronisation des données
Tâche de synchronisation hors ligne pour une table unique
Pour connaître les étapes de configuration, consultez les rubriques Configuration d'une tâche dans l'interface sans code et Configuration d'une tâche dans l'éditeur de code.
Pour obtenir la liste complète des paramètres et une référence du script, voir l'Annexe : Démo de script et description des paramètres.
Tâche de synchronisation hors ligne pour une base de données complète
Pour les étapes de configuration, reportez-vous à la rubrique Configuration de la synchronisation de base de données par lots.
FAQ
Pourquoi la base de données de secours peut-elle manquer de données lors d'une synchronisation actif/passif ?
Dans une configuration de reprise après sinistre de type actif/passif, la base de données de secours applique continuellement les modifications provenant de la base de données principale via les journaux binaires (binlogs). Ce processus implique un décalage temporel inhérent, que la latence réseau peut amplifier. Par conséquent, la base de données de secours peut ne pas refléter la base de données principale en temps réel, ce qui peut entraîner des écarts de données significatifs entre les deux.
DB2 Reader garantit-il la cohérence des données lors d'une extraction simultanée ?
DB2 est un système de gestion de base de données relationnelle (SGBDR) offrant des interfaces de requête à forte cohérence. En mode monothread, DB2 Reader lit un instantané cohérent : si une autre source écrit des données pendant l'exécution de la tâche, DB2 Reader ne récupère pas ces mises à jour.
Lorsque vous configurez une extraction simultanée à l'aide du paramètre splitPk, DB2 Reader lance plusieurs tâches qui ne font pas partie de la même transaction de lecture et s'exécutent à des moments différents. Dans ce cas, les instantanés lus par les tâches simultanées peuvent être incomplets ou incohérents. Deux solutions de contournement sont possibles :
Utilisez la synchronisation monothread (sans partitionnement des données). Cette approche préserve la cohérence des données, mais réduit la vitesse de synchronisation.
Désactivez les écritures sur la source pendant la synchronisation, par exemple en verrouillant les tables ou en suspendant la réplication vers la base de données de secours. Cela fige les données source, mais peut affecter les services en ligne.
Dois-je configurer l'encodage pour DB2 Reader ?
Non. DB2 Reader utilise Java Database Connectivity (JDBC) pour extraire les données. JDBC gère la conversion de l'encodage au niveau inférieur, de sorte que DB2 Reader détecte et transcode automatiquement l'encodage.
Comment configurer la synchronisation incrémentielle des données ?
DB2 Reader extrait les données à l'aide d'instructions SELECT JDBC. Vous pouvez donc utiliser SELECT...WHERE... pour l'extraction incrémentielle de deux manières :
Si l'application source renseigne un champ d'horodatage (comme une colonne
modify) lors des modifications de données, configurez une clausewhereen utilisant l'horodatage de la dernière exécution de synchronisation. Cela permet de capturer les nouvelles lignes, les lignes mises à jour et les lignes supprimées logiquement.Pour les données en ajout seul (append-only), configurez une clause
whereen utilisant l'ID auto-incrémenté maximal de la précédente exécution de synchronisation.
Si aucun champ ne permet de distinguer les nouvelles données des données existantes, seule la synchronisation complète est possible.
Le paramètre querySql est-il protégé contre les injections SQL ?
DB2 Reader n'effectue aucune vérification de sécurité sur l'instruction querySql. Examinez et validez toute instruction SQL personnalisée avant de configurer ce paramètre.
Annexe : Démo de script et description des paramètres
Utilisez les scripts et références de paramètres suivants lors de la configuration d'une tâche de synchronisation par lots dans l'éditeur de code. Pour la procédure générale, consultez la rubrique Configuration d'une tâche dans l'éditeur de code.
Démo de script Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "db2",
"parameter": {
"datasource": "",
"jdbcUrl": "",
"username": "",
"password": "",
"table": "",
"column": [
"id"
],
"where": "",
"splitPk": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres Reader
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
|
Nom de la source de données tel que configuré dans DataWorks. |
Oui |
Aucune |
|
|
URL JDBC de la base de données DB2. Format : |
Oui |
Aucune |
|
|
Nom d'utilisateur de la source de données. |
Oui |
Aucun |
|
|
Mot de passe associé au nom d'utilisateur. |
Oui |
Aucun |
|
|
Table source. Une seule tâche peut lire une seule table. |
Oui |
Aucune |
|
|
Colonnes à lire, spécifiées sous forme de tableau JSON. Toutes les colonnes : |
Oui |
Aucune |
|
|
Champ utilisé pour partitionner les données lors d'une extraction simultanée. Utilisez la clé primaire de la table pour une distribution uniforme et afin d'éviter les points chauds de données. Seuls les champs entiers sont pris en charge ; les nombres à virgule flottante, les chaînes et les dates ne sont pas pris en charge. Si un type non pris en charge est spécifié, DB2 Reader renvoie une erreur. |
Non |
|
|
|
Condition de filtrage. DB2 Reader construit une instruction |
Non |
Aucune |
|
|
Instruction |
Non |
Aucune |
|
|
Nombre d'enregistrements récupérés par lot depuis la base de données. Une valeur plus élevée réduit les allers-retours réseau et améliore les performances d'extraction. |
Non |
|
Si fetchSize dépasse 2048, une erreur d'épuisement de la mémoire (OOM) peut se produire pendant la synchronisation.
Démo de script Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "db2",
"parameter": {
"jdbcUrl": "jdbc:db2://ip:port/database",
"username": "",
"password": "",
"table": "",
"column": [
"id"
],
"preSql": [],
"postSql": [],
"batchSize": 1024
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres Writer
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
|
URL JDBC de la base de données DB2. Format : |
Oui |
Aucune |
|
|
Nom d'utilisateur de la source de données. |
Oui |
Aucun |
|
|
Mot de passe associé au nom d'utilisateur. |
Oui |
Aucun |
|
|
Table de destination. |
Oui |
Aucune |
|
|
Colonnes de destination vers lesquelles écrire, spécifiées sous forme de tableau JSON. Exemple : |
Oui |
Aucune |
|
|
Instruction SQL à exécuter avant le démarrage de la tâche de synchronisation. Utilisez-la pour effacer les anciennes données ou effectuer des opérations de configuration. Une seule instruction est prise en charge. |
Non |
Aucune |
|
|
Instruction SQL à exécuter après la fin de la tâche de synchronisation. Dans l'interface sans code, une seule instruction est prise en charge. Dans l'éditeur de code, plusieurs instructions sont prises en charge. |
Non |
Aucune |
|
|
Nombre d'enregistrements soumis par lot. Une valeur plus élevée réduit les allers-retours réseau et améliore le débit d'écriture. Si la valeur est trop élevée, une erreur OOM peut se produire. |
Non |
|