Controladores

Controlador DB2x

Esta documentación explica la implementación del controlador DB2x y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantic.

Parámetros de Conexión

Campo UIImplementación TécnicaDescripciónRequeridoValor por Defecto
Hosthost en la configuración de conexión odbcEl nombre de host o dirección IP del servidor DB2 for i (AS/400)localhost
Puertoport en la configuración de conexión odbcEl número de puerto en el que escucha el servidor DB2 for i446
Base de Datosdb en la configuración de conexión odbcEl nombre de la base de datos/librería a la que conectarseNinguno (debe ser especificado)
EsquemadbSchema en la configuración gigadbEl esquema/librería a usar para consultas y extracción de metadatosNinguno (debe ser especificado)
Nombre de Usuariouser en la configuración de conexión odbcUsuario de base de datos para autenticaciónNinguno (debe ser especificado)
Contraseñapassword en la configuración de conexión odbcContraseña para el usuario de base de datosNinguno (debe ser especificado)

Detalles Técnicos

La implementación del controlador DB2x utiliza una combinación de la biblioteca Node.js odbc para conectividad a bases de datos y la biblioteca ssh2 para transferencias seguras de archivos, con un enfoque único basado en plantillas para operaciones de escritura.

Aspectos técnicos clave:

  • El agrupamiento de conexiones se soporta mediante la bandera pooled en la configuración
  • La selección de esquema/librería es requerida y afecta a toda la generación de consultas
  • El controlador utiliza tablas del sistema QSYS2 para la extracción de metadatos (SYSTABLES, SYSCOLUMNS2, SYSINDEXES)
  • Las operaciones de lectura utilizan consultas ODBC estándar al sistema DB2 for i
  • Las operaciones de escritura utilizan un sistema de ejecución de scripts shell basado en plantillas

Cuando el túnel SSH está habilitado, las conexiones utilizan una implementación de cliente SSH separada a través de la biblioteca ssh2 en lugar del túnel SSH integrado.

Proceso de Operaciones de Escritura

El controlador DB2x tiene un enfoque único para escribir datos:

  1. Los datos se escriben primero en un archivo CSV local
  2. El archivo CSV se transfiere luego al sistema remoto vía SFTP
  3. Se ejecuta una plantilla write.sh en el sistema remoto para procesar los datos
  4. El script shell puede ejecutar cualquier comando necesario para cargar los datos en DB2

Opciones de Autenticación

DB2x soporta varios tipos de autenticación:

Tipo de AutenticaciónMapeo UIDescripción
NingunaNo aplicable para DB2xDB2x siempre requiere autenticación
ContraseñaCampos de usuario/contraseñaAutenticación estándar usuario/contraseña
Gestor de ContraseñasVarios campos de gestores de contraseñasObtiene credenciales de gestores de contraseñas externos

Soporte de Túnel SSH

El controlador DB2x soporta conexiones SSH para acceso seguro a bases de datos. Para información detallada sobre la configuración de túneles SSH, por favor consulte la documentación de Túneles SSH.

Endpoints de API Utilizados

Las conexiones DB2x se utilizan principalmente en:

  • Creación de Tap (descubrimiento de fuente de datos)
  • Creación de Sink (destino de datos para datos anonimizados)
  • Ejecución de Pipeline (extracción y carga de datos)

Dependencias de Controlador Node.js

El controlador DB2x depende de dos bibliotecas Node.js:

  • Biblioteca: odbc
    • Propósito: Conectarse a bases de datos IBM DB2 for i utilizando ODBC
    • Características: Agrupamiento de conexiones, sentencias preparadas, transacciones
  • Biblioteca: ssh2
    • Propósito: Proporciona funcionalidad SSH y SFTP para transferencias seguras de archivos
    • Características: Transferencia segura de archivos, ejecución de comandos shell, gestión de conexiones

Nota: El controlador DB2x no está incluido en las configuraciones estándar de driverPorts o driverAuthOptions, indicando que puede ser una implementación especializada o personalizada.

Parámetros Personalizados

El controlador DB2x soporta parámetros personalizados adicionales que pueden especificarse en formato YAML para ajustar finamente tanto el comportamiento de conexión ODBC como las opciones de transferencia de archivos SSH/SFTP.

Parámetros de Conexión ODBC

# Parámetros básicos de conexión
# Comportamiento de Conexión
CONNTYPE: 1  # Tipo de conexión: 0=Por defecto, 1=Primaria, 2=Secundaria
SORTTYPE: 2  # Tipo de ordenación: 0=Sistema, 1=Hex, 2=Tabla
LANGUAGEID: "ENU"  # ID de idioma para soporte de idioma nacional
 
# Opciones de Rendimiento
MAXBUFLEN: 32767  # Longitud máxima del buffer para datos de columna
LOBThreshold: 32767  # Umbral para manejo de datos LOB
BLOCKING: 100  # Número de filas a obtener por petición
 
# Configuración de Tiempos de Espera
loginTimeout: 30  # Tiempo de espera de inicio de sesión en segundos
queryTimeout: 60  # Tiempo de espera de consulta en segundos
connectionTimeout: 30  # Tiempo de espera para establecimiento de conexión

Parámetros SSH/SFTP

# Parámetros de conexión SSH para transferencias de archivos
sshHost: "remote.example.com"
sshPort: 22
sshUsername: "sftp_user"
sshPassword: "sftp_password"
 
# Autenticación con Clave SSH
privateKey: "/ruta/a/la/clave_privada"
passphrase: "frase_de_paso_de_la_clave"
 
# Opciones SFTP
sftpPath: "/ruta/remota/de/carga"
filePrefix: "datos_"
fileSuffix: ".csv"
remoteCommand: "/ruta/a/write.sh"
 
# Configuración de Conexión SSH
sshTimeout: 20000  # Tiempo de espera de conexión SSH en milisegundos
sshReadyTimeout: 20000  # Tiempo de espera de disponibilidad SSH en milisegundos
keepaliveInterval: 120000  # Intervalo de keepalive en milisegundos
keepaliveCountMax: 3  # Número máximo de keepalive
 
# Opciones de Seguridad
algorithms:
  kex: ["diffie-hellman-group14-sha256"]
  cipher: ["aes256-ctr"]
validateServerCertificate: true

Parámetros de Agrupamiento de Conexiones

# Configuración del agrupamiento
pooled: true
poolMin: 0
poolMax: 10
poolIncrement: 1
poolTimeout: 60  # Tiempo de espera del agrupamiento en segundos

Ejemplos de Configuraciones

Configuración Básica

sshHost: "remote.example.com"
sshUsername: "sftp_user"
sshPassword: "sftp_secreto"
sftpPath: "/cargas/"
remoteCommand: "/scripts/procesar_datos.sh"
pooled: true

Configuración con Autenticación por Clave SSH

sshHost: "remote.example.com"
sshPort: 22
sshUsername: "deploy"
privateKey: ${file:/ruta/a/la/clave_privada_ssh}
passphrase: ${env:SSH_FRASE_DE_PASO}
sftpPath: "/datos/entrantes/"
filePrefix: "gig_"
remoteCommand: "/usr/local/bin/cargar_datos.sh"

Configuración Avanzada con Optimización de Rendimiento

CONNTYPE: 1
BLOCKING: 500
LOBThreshold: 65536
queryTimeout: 300
pooled: true
poolMax: 20
 
# Configuración SSH
sshHost: "sftp.example.com"
sshPort: 22
sshUsername: "usuario_datos"
sshPassword: "contraseña_datos"
sftpPath: "/cargas/masivas/"
remoteCommand: "/opt/scripts/carga_masiva.sh"
sshTimeout: 30000
keepaliveInterval: 60000