El origen de datos DB2 conecta DataWorks con bases de datos IBM DB2 para la sincronización de datos sin conexión. Utilícelo para leer y escribir en DB2 dentro de tareas de sincronización por lotes.
Versiones compatibles
DB2 Reader y DB2 Writer usan el controlador IBM Data Server Driver for JDBC and SQLJ 4.11.77. Para consultar la correspondencia de versiones entre el controlador de DB2 y el servicio de base de datos, consulte la documentación oficial.
Capacidades compatibles
|
Capability |
Supported |
|
Lectura sin conexión (sincronización completa) |
Sí |
|
Escritura sin conexión (sincronización completa) |
Sí |
|
Lectura desde vistas |
Sí |
|
Sincronización incremental |
Sí (mediante el filtro |
|
Cifrado AES |
No |
|
Grupos de recursos serverless |
Sí |
|
Grupos de recursos exclusivos para Data Integration |
Sí |
|
Grupos de recursos públicos |
No |
|
Grupos de recursos personalizados |
No |
Tipos de campo compatibles
DB2 Reader y DB2 Writer admiten los siguientes tipos de datos de DB2 para las operaciones de lectura y escritura sin conexión. Compruebe sus tipos de datos antes de configurar una tarea de sincronización.
|
Type category |
DB2 data types |
|
Tipos enteros |
SMALLINT |
|
Tipos de punto flotante |
DECIMAL, REAL, DOUBLE |
|
Tipos de cadena |
CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB |
|
Tipos de fecha y hora |
DATE, TIME, TIMESTAMP |
|
Tipos booleanos |
Ninguna |
|
Tipos binarios |
BLOB |
Limitaciones
Grupos de recursos: DB2 Reader y DB2 Writer son compatibles con Serverless resource groups y exclusive resource groups for Data Integration. No se admiten Public resource groups ni custom resource groups.
-
Comportamiento de escritura: DB2 Writer escribe los datos mediante instrucciones
insert into. Si ocurre un conflicto de clave primaria o de índice único, las filas conflictivas no se escriben. Para mejorar el rendimiento, DB2 Writer usaPreparedStatement + BatchconrewriteBatchedStatements=true. De esta forma, almacena los datos temporalmente en un búfer del contexto del hilo y envía una solicitud de escritura cuando el búfer alcanza el umbral configurado.La tarea de sincronización requiere como mínimo el
insert intopermiso. Es posible que necesite permisos adicionales según las instrucciones SQL configuradas en lospreSqlypostSqlparámetros. Cifrado: El algoritmo de cifrado AES de DB2 no es compatible.
Agregar un origen de datos
Agregue el origen de datos DB2 a DataWorks antes de desarrollar una tarea de sincronización. Siga las instrucciones descritas en Gestión de orígenes de datos. Las descripciones de los parámetros están disponibles en la consola de DataWorks al agregar el origen de datos.
Desarrollar una tarea de sincronización de datos
Tarea de sincronización sin conexión para una sola tabla
Para conocer los pasos de configuración, consulte Configure a task in the codeless UI y Configure a task in the code editor.
Para ver todos los parámetros y una referencia de script, consulte Appendix: Script demo and parameter description.
Tarea de sincronización sin conexión para una base de datos completa
Para conocer los pasos de configuración, consulte Batch database synchronization configuration.
Preguntas frecuentes
¿Por qué podrían faltar datos en la base de datos en espera durante la sincronización activa/en espera?
En una configuración de recuperación ante desastres activa/en espera, la base de datos en espera aplica continuamente los cambios de la base de datos principal mediante registros binarios. Este proceso tiene un retraso inherente que la latencia de red puede agravar. Por lo tanto, la base de datos en espera podría no reflejar a la base de datos principal en tiempo real, lo que genera posibles discrepancias importantes de datos entre ambas.
¿DB2 Reader garantiza la coherencia de los datos durante la extracción simultánea?
DB2 es un sistema de gestión de bases de datos relacionales (RDBMS) con interfaces de consulta de alta coherencia. En el modo de un solo hilo, DB2 Reader lee una instantánea coherente; si otro origen escribe datos mientras se ejecuta la tarea, DB2 Reader no recupera esas actualizaciones.
Cuando configura la extracción simultánea con el parámetro splitPk, DB2 Reader inicia varias tareas que no forman parte de la misma transacción de lectura y se ejecutan en momentos distintos. En este caso, las instantáneas leídas por las tareas simultáneas pueden estar incompletas o ser incoherentes. Existen dos alternativas:
Utilice la sincronización de un solo hilo (sin partición de datos). Esta opción conserva la coherencia de los datos, pero reduce la velocidad de sincronización.
Deshabilite las escrituras en el origen durante la sincronización; por ejemplo, bloquee las tablas o pause la replicación hacia la base de datos en espera. Esto mantiene estáticos los datos de origen, aunque puede afectar los servicios en línea.
¿Es necesario configurar la codificación para DB2 Reader?
No. DB2 Reader extrae los datos mediante Java Database Connectivity (JDBC). JDBC gestiona la conversión de codificación en la capa subyacente, por lo que DB2 Reader detecta y transcodifica automáticamente la codificación.
¿Cómo configuro la sincronización incremental de datos?
DB2 Reader extrae los datos mediante instrucciones SELECT de JDBC. Por ello, puede usar SELECT...WHERE... para la extracción incremental de dos maneras:
Si la aplicación de origen llena un campo de marca de tiempo (como una columna
modify) cuando cambian los datos, configure una cláusulawherecon la marca de tiempo de la última ejecución de sincronización. Así capturará las filas nuevas, actualizadas y eliminadas lógicamente.Para datos de solo anexión, configure una cláusula
wherecon el identificador de incremento automático máximo de la ejecución de sincronización anterior.
Si ningún campo distingue los datos nuevos de los existentes, solo es posible aplicar la sincronización completa.
¿El parámetro querySql está protegido contra la inyección SQL?
DB2 Reader no comprueba la seguridad de la instrucción querySql. Revise y valide cualquier código SQL personalizado antes de configurar este parámetro.
Apéndice: demostración de script y descripción de parámetros
Use los siguientes scripts y referencias de parámetros cuando configure una tarea de sincronización por lotes en el editor de código. Para conocer el procedimiento general, consulte Configure a task in the code editor.
Demostración de script de 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"
}
]
}
}
Parámetros de Reader
|
Parameter |
Description |
Required |
Default |
|
|
El nombre del origen de datos tal como se configuró en DataWorks. |
Sí |
Ninguna |
|
|
La URL de JDBC para la base de datos DB2. Formato: |
Sí |
Ninguna |
|
|
El nombre de usuario del origen de datos. |
Sí |
Ninguna |
|
|
La contraseña del nombre de usuario. |
Sí |
Ninguna |
|
|
La tabla de origen. Un solo trabajo puede leer únicamente de una tabla. |
Sí |
Ninguna |
|
|
Las columnas que se van a leer, especificadas como una matriz JSON. Todas las columnas: |
Sí |
Ninguna |
|
|
El campo utilizado para particionar los datos en la extracción simultánea. Use la clave primaria de la tabla para lograr una distribución uniforme y evitar puntos críticos de datos. Solo se admiten campos enteros; no se admiten números de punto flotante, cadenas ni fechas. Si especifica un tipo no compatible, DB2 Reader devuelve un error. |
No |
|
|
|
Una condición de filtro. DB2 Reader construye una instrucción |
No |
Ninguna |
|
|
Una instrucción |
No |
Ninguna |
|
|
La cantidad de registros recuperados por lote desde la base de datos. Un valor mayor reduce los viajes de ida y vuelta por la red y mejora el rendimiento de extracción. |
No |
|
Si fetchSize supera 2048, podría producirse un error de falta de memoria (OOM) durante la sincronización.
Demostración de script de 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"
}
]
}
}
Parámetros de Writer
|
Parameter |
Description |
Required |
Default |
|
|
La URL de JDBC para la base de datos DB2. Formato: |
Sí |
Ninguna |
|
|
El nombre de usuario del origen de datos. |
Sí |
Ninguna |
|
|
La contraseña del nombre de usuario. |
Sí |
Ninguna |
|
|
La tabla de destino. |
Sí |
Ninguna |
|
|
Las columnas de destino donde se escribirá, especificadas como una matriz JSON. Ejemplo: |
Sí |
Ninguna |
|
|
Una instrucción SQL que se ejecutará antes de que comience la tarea de sincronización. Úsela para borrar datos antiguos o ejecutar operaciones de preparación. Solo se admite una instrucción. |
No |
Ninguna |
|
|
Una instrucción SQL que se ejecutará después de que finalice la tarea de sincronización. En la interfaz sin código, solo se admite una instrucción. En el editor de código, se admiten varias instrucciones. |
No |
Ninguna |
|
|
La cantidad de registros enviados por lote. Un valor mayor reduce los viajes de ida y vuelta por la red y mejora el rendimiento de escritura. Si se establece demasiado alto, podría producirse un error OOM. |
No |
|