Controladores

Controlador MongoDB

Esta documentación explica la implementación del controlador MongoDB 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 de mongodbEl nombre de host o dirección IP del servidor MongoDBlocalhost
Puertoport en la configuración de conexión de mongodbEl número de puerto en el que escucha el servidor MongoDB27017 (de driverPorts)
Base de Datosdb en la configuración de conexión de mongodbEl nombre de la base de datos a la que conectarseNinguno (debe ser especificado)
Nombre de Usuariouser en la configuración de conexión de mongodbUsuario de base de datos para autenticaciónNoNinguno
Contraseñapassword en la configuración de conexión de mongodbContraseña para el usuario de base de datosNoNinguno

Detalles Técnicos

La implementación del controlador MongoDB utiliza la biblioteca Node.js mongodb con MongoClient para conexiones.

  • Base de datos basada en documentos que utiliza colecciones en lugar de tablas
  • Formato de cadena de conexión: mongodb://host:port o URL personalizada via config.url
  • La extracción de esquemas se realiza mediante muestreo de documentos de las colecciones
  • Las relaciones de clave foránea se detectan buscando referencias ObjectId entre colecciones
  • Utiliza un enfoque de muestreo de documentos para la inferencia de esquemas
  • Soporta opciones de conexión como useUnifiedTopology: true

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

Opciones de Autenticación

MongoDB soporta autenticación estándar usuario/contraseña y también autenticación basada en cadena de conexión.

Tipo de AutenticaciónMapeo UIDescripción
NingunaSin campos de usuario/contraseñaConecta sin 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 MongoDB 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 MongoDB 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 MongoDB 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/TLS
tls: true
tlsCAFile: /ruta/a/ca.pem
tlsCertificateKeyFile: /ruta/a/certificado-cliente.pem
tlsCertificateKeyFilePassword: contraseña_certificado
tlsAllowInvalidCertificates: false
tlsAllowInvalidHostnames: false
tlsInsecure: false
 
# Opciones de Autenticación
authMechanism: "SCRAM-SHA-256"  # o "SCRAM-SHA-1", "MONGODB-X509", "GSSAPI", "PLAIN"
authSource: "admin"
authMechanismProperties:
  SERVICE_NAME: "mongodb"
  CANONICALIZE_HOST_NAME: false
 
# Configuración de Tiempos de Espera
connectTimeoutMS: 30000
socketTimeoutMS: 360000
serverSelectionTimeoutMS: 30000
heartbeatFrequencyMS: 10000
maxIdleTimeMS: 30000
 
# Preferencias de Lectura
readPreference: "primary"  # o "primaryPreferred", "secondary", "secondaryPreferred", "nearest"
maxStalenessSeconds: 90
 
# Compresión
compressors: ["snappy", "zlib"]
zlibCompressionLevel: 6

Configuración de Agrupamiento

# Opciones de dimensionamiento de agrupamiento
maxPoolSize: 100
minPoolSize: 10
maxConnecting: 2
 
# Opciones de tiempo de espera de agrupamiento
maxIdleTimeMS: 30000
waitQueueTimeoutMS: 0

Ejemplos de Configuraciones

Configuración Básica

maxPoolSize: 50
serverSelectionTimeoutMS: 5000

Configuración SSL

tls: true
tlsCAFile: ${file:/ruta/a/ca-cert.pem}
tlsCertificateKeyFile: ${file:/ruta/a/certificado.pem}
tlsCertificateKeyFilePassword: contraseña_cert
authMechanism: "MONGODB-X509"

Configuración de Conjunto de Réplicas

host: rs1.ejemplo.com,rs2.ejemplo.com,rs3.ejemplo.com
port: 27017
database: base_de_datos_replicada
readPreference: "secondaryPreferred"
maxStalenessSeconds: 120
maxPoolSize: 25
minPoolSize: 5
compressors: ["snappy"]