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 UI | Implementación Técnica | Descripción | Requerido | Valor por Defecto |
|---|---|---|---|---|
| Host | host en la configuración de conexión de mongodb | El nombre de host o dirección IP del servidor MongoDB | Sí | localhost |
| Puerto | port en la configuración de conexión de mongodb | El número de puerto en el que escucha el servidor MongoDB | Sí | 27017 (de driverPorts) |
| Base de Datos | db en la configuración de conexión de mongodb | El nombre de la base de datos a la que conectarse | Sí | Ninguno (debe ser especificado) |
| Nombre de Usuario | user en la configuración de conexión de mongodb | Usuario de base de datos para autenticación | No | Ninguno |
| Contraseña | password en la configuración de conexión de mongodb | Contraseña para el usuario de base de datos | No | Ninguno |
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:porto URL personalizada viaconfig.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ón | Mapeo UI | Descripción |
|---|---|---|
| Ninguna | Sin campos de usuario/contraseña | Conecta sin 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 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)
Tablas Grandes y Reanudación
Esta sección recoge solo lo propio de MongoDB. Cómo funcionan la reanudación, los rangos paralelos y las estimaciones de filas en todos los controladores se explica en Bases de datos grandes.
Lectura
- Las colecciones se leen por bloques ordenados por
_id, de modo que un job que se detiene se reanuda tras el último_idque guardó. Cada bloque es una agregación conallowDiskUse. - Una colección cuyos valores de
_idson de varios tipos BSON (por ejemplo ObjectIds y strings) se lee con un único cursor y empieza de nuevo si el job se detiene. El log del job dice quehas _ids of several types. - Un where cuya primera etapa es una etapa de pipeline distinta de
$matchtambién lee la colección con un único cursor, porque esa etapa puede cambiar los documentos o su_id.
Rangos Paralelos y Estimación de Filas
- Los rangos se cortan a partir de un
$samplede los valores de_id. Las colecciones con_idde varios tipos no se dividen. - La estimación de filas es
estimatedDocumentCount(), que se lee de los metadatos de la colección.
Carga
- Los documentos se escriben con
insertManyordenado. La opción truncate borra los documentos condeleteMany; la opción drop elimina la colección. - Para reanudar una colección, el sink cuenta sus documentos con
countDocuments. El sink MongoDB no cuenta los documentos de un rango de claves, así que cuando una colección se leyó por rangos y el recuento no indica qué lotes en curso se escribieron, la colección empieza de nuevo.
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: 6Configuración de Agrupamiento
# Opciones de dimensionamiento de agrupamiento
maxPoolSize: 100
minPoolSize: 10
maxConnecting: 2
# Opciones de tiempo de espera de agrupamiento
maxIdleTimeMS: 30000
waitQueueTimeoutMS: 0Ejemplos de Configuraciones
Configuración Básica
maxPoolSize: 50
serverSelectionTimeoutMS: 5000Configuració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"]