Controladores

Controlador MSSQL

Esta documentación explica la implementación del controlador MSSQL 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
Hostserver en la configuración de mssqlEl nombre de host o dirección IP del servidor MSSQLlocalhost
Puertoport en la configuración de mssqlEl número de puerto en el que escucha el servidor MSSQL1433 (de driverPorts)
Base de Datosdatabase en la configuración de mssqlEl nombre de la base de datos a la que conectarseNinguno (debe ser especificado)
Nombre de Usuariouser en la configuración de mssqlUsuario de base de datos para autenticaciónNoNinguno (cuando se usa autenticación de Windows)
Contraseñapassword en la configuración de mssqlContraseña para el usuario de base de datosNoNinguno (cuando se usa autenticación de Windows)
EsquemadbSchema en la configuración de gigadbEl esquema a usar para consultas y extracción de metadatosNoNinguno (por defecto al esquema del usuario)

Detalles Técnicos

La implementación del controlador MSSQL utiliza la biblioteca Node.js mssql que internamente usa la biblioteca tedious para conexiones.

Aspectos técnicos clave:

  • El agrupamiento de conexiones es soportado a través de la bandera pooled en la configuración
  • La autenticación puede ser de tipo SQL Server (usuario/contraseña) o autenticación de Windows
  • El controlador utiliza vistas INFORMATION_SCHEMA y tablas del sistema para la extracción de metadatos
  • La extracción de esquemas incluye nombres de tablas, información de columnas y tipos de datos
  • La generación de DDL utiliza tablas del sistema para crear sentencias CREATE TABLE
  • El controlador requiere permisos VIEW DATABASE STATE para acceder a sys.dm_db_partition_stats
  • Las operaciones de inserción masiva son soportadas a través del método bulkBatchInsert
  • Las relaciones de clave foránea se detectan consultando sys.foreign_keys y tablas relacionadas
  • Manejo adecuado de tipos de datos específicos de Microsoft SQL Server (uniqueidentifier, datetime2, etc.)

Cuando el túnel SSH está habilitado, las conexiones se establecen primero a través del túnel antes de conectarse al servidor MSSQL.

Formato de Cadena de Conexión

Las conexiones MSSQL se construyen usando el formato de conexión de tedious:

Server=[host],[port];Database=[database];User ID=[user];Password=[password];Encrypt=true;TrustServerCertificate=true;

Para autenticación de Windows, la cadena de conexión omite el User ID y Password:

Server=[host],[port];Database=[database];Integrated Security=true;Encrypt=true;TrustServerCertificate=true;

Opciones de Autenticación

MSSQL soporta varios tipos de autenticación:

Tipo de AutenticaciónMapeo UIDescripción
NingunaSin campos de usuario/contraseñaUsa autenticación de Windows/Integrated
ContraseñaCampos de usuario/contraseñaAutenticación estándar de SQL Server
Gestor de ContraseñasVarios campos de gestores de contraseñasObtiene credenciales de gestores de contraseñas externos

Soporte de Túnel SSH

El controlador MSSQL soporta túneles SSH para acceso seguro a bases de datos detrás de firewalls o en redes privadas. 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 MSSQL 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)

Dependencia de Controlador Node.js

El controlador MSSQL depende de la biblioteca Node.js mssql:

  • Biblioteca: mssql
  • Propósito: Conectarse a bases de datos Microsoft SQL Server
  • Características: Agrupamiento de conexiones, sentencias preparadas, operaciones masivas, transacciones

Parámetros Personalizados

El controlador MSSQL soporta parámetros personalizados adicionales que pueden especificarse en formato YAML para ajustar finamente el comportamiento de conexión, agrupamiento, configuraciones SSL y otras opciones avanzadas.

Opciones de Conexión

# Seguridad y Encriptación
encrypt: true
trustServerCertificate: true
cryptoCredentialsDetails:
# Opciones de configuración TLS
rejectUnauthorized: false
multiSubnetFailover: false
 
# Opciones de Autenticación
domain: "MIDOMINIO"
trustedConnection: false  # Para autenticación de Windows con el controlador msnodesqlv8
 
# Comportamiento de Conexión
connectionRetryInterval: 500
maxRetriesOnTransientErrors: 3

Opciones de Agrupamiento

# Configuración de agrupamiento
pool:
  min: 0
  max: 10
  idleTimeoutMillis: 30000
  acquireTimeoutMillis: 30000

Opciones de Transacciones

# Configuración de transacciones
transaction:
  isolationLevel: "READ_COMMITTED"  # o "READ_UNCOMMITTED", "REPEATABLE_READ", "SERIALIZABLE", "SNAPSHOT"

Ejemplos de Configuraciones

Configuración Básica

encrypt: true
trustServerCertificate: false
connectionRetryInterval: 1000

Configuración con Dominio de Windows

domain: "CORPORATIVO"
trustedConnection: true
encrypt: true

Configuración Avanzada con Agrupamiento

pool:
  min: 5
  max: 20
  idleTimeoutMillis: 60000
transaction:
  isolationLevel: "SNAPSHOT"
multiSubnetFailover: true