Controladores

Controlador PostgreSQL

Esta documentación explica la implementación del controlador PostgreSQL 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 pgEl nombre de host o dirección IP del servidor PostgreSQLlocalhost
Puertoport en la configuración de conexión pgEl número de puerto en el que escucha el servidor PostgreSQL5432 (de driverPorts)
Base de Datosdatabase en la configuración de conexión pgEl nombre de la base de datos a la que conectarseNinguno (debe ser especificado)
Esquemaschema en la configuración gigadbEl esquema a usar para consultas y extracción de metadatosNopublic
Nombre de Usuariouser en la configuración de conexión pgUsuario de base de datos para autenticaciónNinguno (debe ser especificado)
Contraseñapassword en la configuración de conexión pgContraseña para el usuario de base de datosNinguno (debe ser especificado)

Detalles Técnicos

La implementación del controlador PostgreSQL utiliza la biblioteca Node.js pg con conexiones basadas en Pool.

  • El agrupamiento de conexiones se utiliza a través de la clase Pool de pg
  • Se soporta la selección de esquema y afecta a la generación de consultas
  • El controlador utiliza search_path para establecer el contexto del esquema para operaciones
  • Los tipos de datos Point se manejan especialmente en el método normalizeRecordPG
  • Para grandes conjuntos de datos, se utiliza TABLESAMPLE para muestreo eficiente

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

Formato de Cadena de Conexión

Las conexiones PostgreSQL combinan campos individuales de la UI en una cadena de conexión:

postgresql://[user[:password]@][host][:port][/database]

La aplicación toma los campos individuales de la UI (Host, Puerto, Base de Datos, Nombre de Usuario, Contraseña) y los combina en este formato para la biblioteca pg.

Opciones de Autenticación

PostgreSQL soporta varios tipos de autenticación:

Tipo de AutenticaciónMapeo UIDescripción
NingunaNo aplicable para PostgreSQLDeshabilita 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 PostgreSQL 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 PostgreSQL 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)

Parámetros Personalizados

El controlador PostgreSQL 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.

Parámetros de Conexión

# Configuración SSL
ssl:
  rejectUnauthorized: false
  ca: |
    -----BEGIN CERTIFICATE-----
    # Contenido del certificado CA
    -----END CERTIFICATE-----
  cert: |
    -----BEGIN CERTIFICATE-----
    # Contenido del certificado de cliente
    -----END CERTIFICATE-----
  key: |
    -----BEGIN PRIVATE KEY-----
    # Contenido de la clave privada de cliente
    -----END PRIVATE KEY-----
 
# Opciones avanzadas de conexión
application_name: mi-app
client_encoding: utf8
statement_timeout: 5000
query_timeout: 10000
lock_timeout: 3000
idle_in_transaction_session_timeout: 60000
keepAliveInitialDelayMillis: 10000

Configuración del Pool

# Opciones de dimensionado del pool
max: 20
min: 5
 
# Opciones de tiempo de espera del pool
connectionTimeoutMillis: 2000
idleTimeoutMillis: 30000
maxLifetimeSeconds: 60
 
# Opciones de comportamiento del pool
allowExitOnIdle: false

Ejemplos de Configuraciones

Configuración SSL

ssl:
  rejectUnauthorized: true
  ca: ${file:/ruta/a/ca-cert.pem}
application_name: aplicacion-gigantic

Configuración Avanzada con Tiempos de Espera

statement_timeout: 30000
query_timeout: 60000
max: 15
min: 2
idleTimeoutMillis: 10000