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 UI | Implementación Técnica | Descripción | Requerido | Valor por Defecto |
|---|---|---|---|---|
| Host | host en la configuración de conexión pg | El nombre de host o dirección IP del servidor PostgreSQL | Sí | localhost |
| Puerto | port en la configuración de conexión pg | El número de puerto en el que escucha el servidor PostgreSQL | Sí | 5432 (de driverPorts) |
| Base de Datos | database en la configuración de conexión pg | El nombre de la base de datos a la que conectarse | Sí | Ninguno (debe ser especificado) |
| Esquema | schema en la configuración gigadb | El esquema a usar para consultas y extracción de metadatos | No | public |
| Nombre de Usuario | user en la configuración de conexión pg | Usuario de base de datos para autenticación | Sí | Ninguno (debe ser especificado) |
| Contraseña | password en la configuración de conexión pg | Contraseña para el usuario de base de datos | Sí | Ninguno (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ón | Mapeo UI | Descripción |
|---|---|---|
| Ninguna | No aplicable para PostgreSQL | Deshabilita autenticación |
| Contraseña | Campos de usuario/contraseña | Autenticación estándar usuario/contraseña |
| Gestor de Contraseñas | Varios campos de gestores de contraseñas | Obtiene 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: 10000Configuració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: falseEjemplos de Configuraciones
Configuración SSL
ssl:
rejectUnauthorized: true
ca: ${file:/ruta/a/ca-cert.pem}
application_name: aplicacion-giganticConfiguración Avanzada con Tiempos de Espera
statement_timeout: 30000
query_timeout: 60000
max: 15
min: 2
idleTimeoutMillis: 10000