El conector de MongoDB integra ApsaraDB for MongoDB y las instalaciones de MongoDB autogestionadas en Realtime Compute for Apache Flink como tablas de origen, de dimensiones y de destino. Utiliza la API de Change Stream para capturar eventos de inserción, actualización, reemplazo y eliminación en tiempo real.
Capacidades
|
Categoría |
Descripción |
|
Tipos de tabla |
Origen SQL, búsqueda (dimensiones) y destino Origen de Flink CDC Origen de DataStream |
|
Modo de ejecución |
Streaming |
|
Tipos de API |
API de DataStream, SQL, Flink CDC |
|
Semántica de escritura del destino |
Inserción, actualización y eliminación (con clave primaria declarada) |
Métricas de monitoreo
Tablas de origen:
numBytesIn, numBytesInPerSecond, numRecordsIn, numRecordsInPerSecond, numRecordsInErrors, currentFetchEventTimeLag, currentEmitEventTimeLag, watermarkLag, sourceIdleTime
Las tablas de dimensiones y de destino no exponen métricas de monitoreo.
Para consultar las definiciones de las métricas, consulte Metrics.
Funcionamiento
El conector de MongoDB lee los datos en dos fases:
Instantánea completa: lee en paralelo todos los documentos existentes de las colecciones indicadas.
Lectura incremental: cambia automáticamente al consumo del oplog mediante la API de Change Stream una vez que termina la instantánea.
Este proceso ofrece semántica exactly-once. De este modo, se garantiza que no haya registros duplicados ni faltantes durante la recuperación ante fallos.
Conceptos clave
Modos de inicio
Elija un modo de inicio según el momento en que su canalización deba empezar a consumir datos:
|
Mode |
Behavior |
Use when |
|
|
Lee una instantánea en el primer inicio y luego cambia a la lectura incremental |
Cuando necesita una copia completa de los datos existentes |
|
|
Inicia desde la posición actual del oplog; no incluye datos históricos |
Si solo requiere los cambios a partir de este momento |
|
|
Lee los eventos del oplog desde una marca de tiempo específica; omite la instantánea |
Más indicado para escenarios donde se necesitan los cambios desde un punto conocido en el tiempo (requiere MongoDB 4.0 o superior) |
Compatibilidad con el registro de cambios completo
De forma predeterminada, MongoDB no almacena el estado previo de los documentos antes de un cambio (en versiones anteriores a MongoDB 6.0). Sin esta información, el conector solo genera eventos UPSERT, por lo que faltan los registros UPDATE_BEFORE.
Para solucionar esto, el planificador de Flink SQL inserta un operador ChangelogNormalize que almacena en caché el estado de los documentos en el backend de estado de Flink. Aunque funciona, este enfoque consume una cantidad considerable de almacenamiento de estado.

MongoDB 6.0 o superior admite el registro de imágenes previas y posteriores. Al habilitar esta función, MongoDB registra el estado completo del documento antes y después de cada cambio. Si establece scan.full-changelog en true, el conector usará estos registros para generar flujos completos de registro de cambios. Esto elimina el operador ChangelogNormalize y su sobrecarga de estado.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de ApsaraDB for MongoDB (conjunto de réplicas o clúster fragmentado), o bien un clúster de MongoDB 3.6 o superior autogestionado con el modo de conjunto de réplicas habilitado. Consulte Replicación.
Si la autenticación está habilitada, un usuario de MongoDB con los siguientes permisos:
splitVector,listDatabases,listCollections,collStats,find,changeStreamy acceso de lectura aconfig.collectionsyconfig.chunks.Las direcciones IP del clúster de Flink agregadas a la lista de permitidos de IP de MongoDB.
La base de datos y la colección de destino creadas antes de ejecutar el trabajo.
Limitaciones
Origen SQL
La lectura paralela de instantáneas requiere MongoDB 4.0 o posterior. Habilítela si establece
scan.incremental.snapshot.enabledentrue.No es posible monitorear las bases de datos
admin,localyconfig, ni las colecciones del sistema. Esta es una restricción de Change Stream de MongoDB. Consulte Change Streams en la documentación de MongoDB.Al crear una tabla de origen SQL, declare la columna
_id STRINGy establézcala como clave primaria.
Destino SQL
VVR 8.0.4 y anteriores: solo inserción.
VVR 8.0.5 y posteriores con clave primaria declarada: inserción, actualización y eliminación.
VVR 8.0.5 y posteriores sin clave primaria: solo inserción.
No se admite la entrega exactly-once. La opción
sink.delivery-guaranteeaceptanoneoat-least-once.
Búsqueda SQL (dimensiones)
Compatible con VVR 8.0.5 y posteriores.
VVR 8.0.9 y posteriores: las uniones de búsqueda admiten la lectura del campo integrado
_idde tipo ObjectId.
SQL
Sintaxis
CREATE TABLE tableName(
_id STRING,
[columnName dataType,]*
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'localhost:27017',
'username' = 'mongouser',
'password' = '${secret_values.password}',
'database' = 'testdb',
'collection' = 'testcoll'
)
Declare la columna _id STRING y especifíquela como clave primaria al crear una tabla de origen CDC.
Opciones del conector
Generales
|
Opción |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
|
String |
Sí |
— |
Identificador del conector. Para tablas de origen: |
|
|
String |
No |
— |
URI de conexión de MongoDB. Especifique |
|
|
String |
No |
— |
Nombre de host del servidor de MongoDB. Separe varios hosts con comas ( |
|
|
String |
No |
|
Protocolo de conexión. Valores válidos: |
|
|
String |
No |
— |
Nombre de usuario de MongoDB. Obligatorio cuando la autenticación está habilitada. |
|
|
String |
No |
— |
Contraseña de MongoDB. Obligatoria cuando la autenticación está habilitada. Utilice variables en lugar de codificar las credenciales directamente. |
|
|
String |
No |
— |
Nombre de la base de datos de MongoDB. Admite expresiones regulares para las tablas de origen. Si no se establece, se supervisan todas las bases de datos. No es posible supervisar las bases de datos |
|
|
String |
No |
— |
Nombre de la colección de MongoDB. Admite expresiones regulares para las tablas de origen. Notas:
|
|
|
String |
No |
— |
Opciones de conexión adicionales como pares De forma predeterminada, el conector no establece un tiempo de espera para la conexión de socket. Esto puede provocar interrupciones prolongadas durante fluctuaciones de red. Establezca |
Origen
|
Opción |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
|
String |
No |
|
Modo de inicio. Valores válidos: |
|
|
Long |
Condicional |
— |
Marca de tiempo de inicio en milisegundos desde la época UNIX. Obligatorio cuando |
|
|
Integer |
No |
|
Tamaño máximo de la cola durante la fase inicial de instantánea. Solo surte efecto cuando |
|
|
Integer |
No |
|
Tamaño del lote del cursor. |
|
|
Integer |
No |
|
Número máximo de documentos de cambio extraídos por lote durante la lectura de flujo. Los valores más altos asignan un búfer interno mayor. |
|
|
Integer |
No |
|
Intervalo entre solicitudes de extracción de datos, en milisegundos. |
|
|
Integer |
No |
|
Intervalo de latido en milisegundos. El conector envía latidos para rastrear la posición más reciente del oplog. Si establece este valor en |
|
|
Boolean |
No |
|
Habilita la lectura paralela de instantáneas. Función experimental. Requiere MongoDB 4.0 o posterior. |
|
|
Integer |
No |
|
Tamaño del fragmento para la lectura paralela de instantáneas, en MB. Función experimental. Solo surte efecto cuando la lectura paralela de instantáneas está habilitada. |
|
|
Boolean |
No |
|
Genera un flujo de registro de cambios completo mediante los registros de preimagen y posimagen de MongoDB. Función experimental. Requiere MongoDB 6.0 o posterior con las funciones de preimagen y posimagen habilitadas. |
|
|
Boolean |
No |
|
Analiza sintácticamente los campos separados por |
|
|
Boolean |
No |
|
Analiza sintácticamente todos los tipos BSON primitivos como STRING. Compatible con VVR 8.0.5 y versiones posteriores. |
|
|
Boolean |
No |
|
Ignora todos los eventos DELETE (-D), incluidos los generados durante el archivado de datos de MongoDB. Compatible con VVR 11.1 y versiones posteriores. |
|
|
Boolean |
No |
|
Valores válidos:
El relleno solo se aplica durante la consulta de instantánea de un único fragmento y no abarca toda la fase de lectura completa. Cuando se omite el relleno, la consulta de instantánea de cada fragmento lee los datos más recientes en ese instante. Las actualizaciones que ocurren en un fragmento después de su lectura no se combinan durante la fase de lectura completa. En su lugar, se leen del OpLog tras entrar en la fase incremental. Por ejemplo, una actualización en chunk5 que ocurre mientras se toma la instantánea de chunk5 se refleja directamente en dicha instantánea. Sin embargo, si chunk5 se actualiza después de que el lector avanzó a chunk80, la actualización se aplica más tarde desde el OpLog durante la fase incremental. Importante
Cuando esta opción está habilitada, los cambios que ocurren durante o después del análisis de un fragmento se entregan desde el OpLog en la fase incremental y podrían duplicarse. Solo se garantiza la semántica de al menos una vez. Habilítela únicamente cuando el destino descendente admita escrituras idempotentes por clave principal. Nota
Compatible solo con VVR 11.1 y versiones posteriores. |
|
|
String |
No |
— |
Operaciones de canalización de agregación de MongoDB aplicadas durante la lectura de instantáneas para filtrar datos. Especifíquelas como una matriz JSON, por ejemplo: |
|
|
Integer |
No |
— |
Número de subprocesos para la replicación de instantáneas. Solo surte efecto cuando |
|
|
Integer |
No |
|
Tamaño de la cola para la instantánea inicial. Solo surte efecto cuando |
|
|
Integer |
No |
|
Número de lectores simultáneos para Change Stream. Solo surte efecto cuando |
|
|
Integer |
No |
|
Tamaño de la cola de mensajes para suscripciones simultáneas de change stream. Solo surte efecto cuando |
Lookup (dimensiones)
|
Opción |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
|
String |
No |
|
Política de caché. Valores válidos: |
|
|
Integer |
No |
|
Número máximo de reintentos cuando falla una búsqueda. |
|
|
Duration |
No |
|
Intervalo entre reintentos cuando falla una búsqueda. |
|
|
Duration |
No |
— |
Tiempo máximo que permanece una entrada en caché después del último acceso. Unidades compatibles: |
|
|
Duration |
No |
— |
Tiempo máximo que permanece una entrada en caché después de escribirse. Requiere que |
|
|
Long |
No |
— |
Número máximo de filas en la caché. Cuando se alcanza el límite, se eliminan las entradas más antiguas. Requiere que |
|
|
Boolean |
No |
|
Almacena una entrada nula en caché cuando una clave de búsqueda no tiene ningún registro coincidente. Requiere que |
|
String |
No |
|
Estrategia de conversión utilizada cuando los valores de cadena de Flink se comparan con la tabla de dimensiones de MongoDB. Valores válidos:
Nota Este parámetro solo es compatible con VVR 11.9 y versiones posteriores. |
Destino
|
Option |
Type |
Required |
Default |
Description |
|
|
Integer |
No |
|
Número máximo de registros escritos por lote. |
|
|
Duration |
No |
|
Intervalo de vaciado. |
|
|
String |
No |
|
Semántica de entrega de escritura. Valores válidos: |
|
|
Integer |
No |
|
Número máximo de reintentos cuando falla una escritura. |
|
|
Duration |
No |
|
Intervalo entre reintentos cuando falla una escritura. |
|
|
Integer |
No |
— |
Paralelismo personalizado del destino. |
|
|
String |
No |
|
Estrategia para manejar eventos -D y -U. Valores válidos: |
Asignaciones de tipos de datos
Origen
|
BSON type |
Flink SQL |
|
Int32 |
INT |
|
Int64 |
BIGINT |
|
Double |
DOUBLE |
|
Decimal128 |
DECIMAL(p, s) |
|
Boolean |
BOOLEAN |
|
Date Timestamp |
DATE |
|
Date Timestamp |
TIME |
|
DateTime |
TIMESTAMP(3), TIMESTAMP_LTZ(3) |
|
Timestamp |
TIMESTAMP(0), TIMESTAMP_LTZ(0) |
|
String, ObjectId, UUID, Symbol, MD5, JavaScript, Regex |
STRING |
|
Binary |
BYTES |
|
Object |
ROW |
|
Array |
ARRAY |
|
DBPointer |
ROW\<$ref STRING, $id STRING\> |
|
GeoJSON Point |
ROW\<type STRING, coordinates ARRAY\<DOUBLE\>\> |
|
GeoJSON Line |
ROW\<type STRING, coordinates ARRAY\<ARRAY\<DOUBLE\>\>\> |
Lookup (dimensiones) y destino
|
BSON type |
Flink SQL type |
|
Int32 |
INT |
|
Int64 |
BIGINT |
|
Double |
DOUBLE |
|
Decimal128 |
DECIMAL |
|
Boolean |
BOOLEAN |
|
DateTime |
TIMESTAMP_LTZ(3) |
|
Timestamp |
TIMESTAMP_LTZ(0) |
|
String, ObjectId |
STRING |
|
Binary |
BYTES |
|
Object |
ROW |
|
Array |
ARRAY |
Columnas de metadatos
El origen SQL admite a continuación columnas de metadatos:
|
Metadata column |
Type |
Description |
|
|
STRING NOT NULL |
Base de datos que contiene el documento. |
|
|
STRING NOT NULL |
Colección que contiene el documento. |
|
|
TIMESTAMP_LTZ(3) NOT NULL |
Hora en la que cambió el documento. Devuelve |
|
|
STRING NOT NULL |
Tipo de evento de cambio: |
Ejemplos
Origen
En el siguiente ejemplo se lee de una tabla de origen de MongoDB con lectura paralela de instantáneas y registro de cambios completo habilitados. Luego, se escriben los campos seleccionados en un destino de impresión.
-- CDC source table: reads product data from MongoDB
-- _id must be declared and set as the primary key
CREATE TEMPORARY TABLE mongo_source (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
db_name STRING METADATA FROM 'database_name' VIRTUAL,
collection_name STRING METADATA VIRTUAL,
op_ts TIMESTAMP_LTZ(3) METADATA VIRTUAL,
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection',
'scan.incremental.snapshot.enabled' = 'true', -- Enable parallel snapshot reading (requires MongoDB 4.0+)
'scan.full-changelog' = 'true' -- Enable full changelog (requires MongoDB 6.0+ with preimage/postimage)
);
CREATE TEMPORARY TABLE productssink (
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price_amount DECIMAL,
suppliers_name STRING,
db_name STRING,
collection_name STRING,
op_ts TIMESTAMP_LTZ(3)
) WITH (
'connector' = 'print',
'logger' = 'true'
);
INSERT INTO productssink
SELECT
name,
weight,
tags,
price.amount,
suppliers[1].name,
db_name,
collection_name,
op_ts
FROM mongo_source;
Lookup (dimensiones)
En el siguiente ejemplo se une un flujo de generador de datos con una tabla de dimensiones de MongoDB mediante una unión temporal.
CREATE TEMPORARY TABLE datagen_source (
id STRING,
a INT,
b BIGINT,
`proctime` AS PROCTIME()
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE mongo_dim (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
PRIMARY KEY(_id) NOT ENFORCED
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection',
'lookup.cache' = 'PARTIAL', -- Cache lookup results for better performance
'lookup.partial-cache.expire-after-access' = '10min', -- Evict cached entries after 10 minutes of inactivity
'lookup.partial-cache.expire-after-write' = '10min', -- Evict cached entries 10 minutes after write
'lookup.partial-cache.max-rows' = '100' -- Maximum 100 rows in the cache
);
CREATE TEMPORARY TABLE print_sink (
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price_amount DECIMAL,
suppliers_name STRING
) WITH (
'connector' = 'print',
'logger' = 'true'
);
INSERT INTO print_sink
SELECT
T.id,
T.a,
T.b,
H.name
FROM datagen_source AS T
JOIN mongo_dim FOR SYSTEM_TIME AS OF T.`proctime` AS H ON T.id = H._id;
Destino
En el siguiente ejemplo se escriben datos de un generador de datos en una tabla de destino de MongoDB. Se declara una clave principal para admitir operaciones de inserción, actualización y eliminación.
CREATE TEMPORARY TABLE datagen_source (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE mongo_sink (
`_id` STRING,
name STRING,
weight DECIMAL,
tags ARRAY<STRING>,
price ROW<amount DECIMAL, currency STRING>,
suppliers ARRAY<ROW<name STRING, address STRING>>,
PRIMARY KEY(_id) NOT ENFORCED -- Declare primary key to enable update and delete
) WITH (
'connector' = 'mongodb',
'hosts' = 'dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,dds-bp169b982fc25****.mongodb.rds.aliyuncs.com:3717,',
'username' = 'root',
'password' = '${secret_values.password}',
'database' = 'flinktest',
'collection' = 'flinkcollection'
);
INSERT INTO mongo_sink SELECT * FROM datagen_source;
Flink CDC (vista previa pública)
Flink CDC permite sincronizar datos de MongoDB con un almacén descendente mediante una canalización basada en scripts YAML, sin necesidad de escribir DDL de SQL. Esta función requiere VVR 11.1 o posterior.
Sintaxis
source:
type: mongodb
name: MongoDB Source
hosts: localhost:33076
username: ${mongo.username}
password: ${mongo.password}
database: foo_db
collection: foo_col_.*
sink:
type: ...
Opciones de configuración
|
Opción |
Obligatorio |
Tipo |
Predeterminado |
Descripción |
|
|
Sí |
STRING |
— |
El conector. Establezca el valor en |
|
|
No |
STRING |
|
Protocolo de conexión. Valores válidos: |
|
|
Sí |
STRING |
— |
Nombres de host del servidor de MongoDB. Separe varios hosts con comas. |
|
|
No |
STRING |
— |
Nombre de usuario de MongoDB. |
|
|
No |
STRING |
— |
Contraseña de MongoDB. |
|
|
Sí |
STRING |
— |
Nombre de la base de datos de MongoDB que se va a capturar. Es compatible con expresiones regulares. |
|
|
Sí |
STRING |
— |
Nombre de la colección de MongoDB que se va a capturar. Es compatible con expresiones regulares. Utilice el espacio de nombres completo |
|
|
No |
STRING |
— |
Opciones de conexión adicionales como pares |
|
|
No |
STRING |
|
Estrategia de inference de esquema. |
|
|
No |
INT |
|
Número máximo de registros que se muestrean por colección durante la inference inicial del esquema. |
|
|
No |
STRING |
|
Modo de inicio. Valores válidos: |
|
|
No |
LONG |
— |
Marca de tiempo de inicio en milisegundos. Es obligatorio cuando |
|
|
No |
INT |
|
Tamaño máximo del fragmento de metadatos. |
|
|
No |
BOOLEAN |
|
Cierra los lectores de origen inactivos después de cambiar a la lectura incremental. |
|
|
No |
BOOLEAN |
|
Valores válidos:
El backfill solo se aplica durante la consulta de instantánea de un único fragmento y no abarca toda la fase de lectura completa. Cuando se omite el backfill, la consulta de instantánea de cada fragmento lee los datos más recientes en ese instante. Las actualizaciones que ocurren en un fragmento después de leerlo no se combinan durante la fase de lectura completa. En su lugar, se leen desde el OpLog tras entrar en la fase incremental. Por ejemplo, si se actualiza chunk5 mientras se toma su instantánea, el cambio se refleja directamente en ella. Sin embargo, si chunk5 se actualiza después de que el lector avanzó a chunk80, el cambio se aplica más tarde desde el OpLog durante la fase incremental. Importante
Cuando esta opción está habilitada, los cambios que ocurren durante o después del análisis de un fragmento se entregan igualmente desde el OpLog en la fase incremental y podrían duplicarse. Solo se garantiza la semántica at-least-once. Habilítela únicamente cuando el destino descendente admita escrituras idempotentes por clave principal. |
|
|
No |
BOOLEAN |
|
Lee primero los fragmentos ilimitados. Reduce el riesgo de agotar la memoria en colecciones que se actualizan con frecuencia. |
|
|
No |
INT |
|
Tamaño del lote del cursor. |
|
|
No |
INT |
|
Número máximo de entradas por solicitud de extracción de Change Stream. |
|
|
No |
INT |
|
Tiempo mínimo de espera entre solicitudes de extracción de Change Stream, en milisegundos. |
|
|
No |
INT |
|
Intervalo de heartbeat en milisegundos. Configure este valor para colecciones que se actualizan con poca frecuencia. Si lo establece en |
|
|
No |
INT |
|
Tamaño del fragmento durante la creación de la instantánea, en MB. |
|
|
No |
INT |
|
Número de muestras utilizadas para estimar el tamaño de la colección durante la creación de la instantánea. |
|
|
No |
BOOLEAN |
|
Genera eventos de registro de cambios completos mediante registros preimage y postimage. Requiere MongoDB 6.0 o posterior con las opciones preimage y postimage habilitadas. |
|
|
No |
BOOLEAN |
|
Deshabilita el tiempo de espera del cursor. De forma predeterminada, MongoDB cierra los cursores inactivos después de 10 minutos. |
|
|
No |
BOOLEAN |
|
Ignora los eventos de eliminación provenientes de MongoDB. |
|
|
No |
BOOLEAN |
|
Aplana los documentos BSON anidados. Por ejemplo, |
|
|
No |
BOOLEAN |
|
Deduce todos los tipos primitivos como STRING. Reduce los eventos de cambio de esquema cuando los tipos del origen son inconsistentes. |
|
|
No |
STRING |
— |
Lista separada por comas de los campos de metadatos que se envían al destino descendente. Valores compatibles: |
Asignaciones de tipos de datos
|
MongoDB BSON |
Flink CDC |
Notes |
|
STRING |
VARCHAR |
— |
|
INT32 |
INT |
— |
|
INT64 |
BIGINT |
— |
|
DECIMAL128 |
DECIMAL |
— |
|
DOUBLE |
DOUBLE |
— |
|
BOOLEAN |
BOOLEAN |
— |
|
TIMESTAMP |
TIMESTAMP |
— |
|
DATETIME |
LOCALZONEDTIMESTAMP |
— |
|
BINARY |
VARBINARY |
— |
|
DOCUMENT |
MAP |
Los tipos de clave y valor se deducen automáticamente. |
|
ARRAY |
ARRAY |
El tipo de los elementos se deduce automáticamente. |
|
OBJECTID |
VARCHAR |
Se representa como una cadena hexadecimal. |
|
SYMBOL, REGULAREXPRESSION, JAVASCRIPT, JAVASCRIPTWITHSCOPE |
VARCHAR |
Se representa como una cadena. |
Columnas de metadatos
Flink CDC admite la siguiente columna de metadatos para el conector de MongoDB:
|
Metadata column |
Type |
Description |
|
|
BIGINT NOT NULL |
Hora en la que cambió el documento (marca de tiempo de OpLog). Devuelve |
Utilice las columnas de metadatos genéricas del módulo Transform para acceder a database_name, collection_name y row_kind.
API de DataStream
Para usar la API de DataStream, configure el conector de DataStream en su trabajo. Consulte DataStream connector usage.
Agregar la dependencia de Maven
El repositorio central de Maven aloja los conectores de VVR para MongoDB.
<dependency>
<groupId>com.alibaba.ververica</groupId>
<artifactId>flink-connector-mongodb</artifactId>
<version>${vvr.version}</version>
</dependency>
Compilar un objeto MongoDBSource
Utilice MongoDBSource.builder() para construir un origen:
Si desea habilitar la lectura de instantáneas incrementales, use el builder de
com.ververica.cdc.connectors.mongodb.source.En caso contrario, use el builder de
com.ververica.cdc.connectors.mongodb.
MongoDBSource.builder()
.hosts("mongo.example.com:27017")
.username("mongouser")
.password("mongopasswd")
.databaseList("testdb") // Supports regular expressions; use .* to match all databases
.collectionList("testcoll") // Supports regular expressions; use .* to match all collections
.startupOptions(StartupOptions.initial()) // StartupOptions.latest-offset(), StartupOptions.timestamp()
.deserializer(new JsonDebeziumDeserializationSchema())
.build();
Parámetros de MongoDBSource
|
Parameter |
Description |
|
|
Nombre de host del servidor de MongoDB. |
|
|
Nombre de usuario de MongoDB. Omítalo si la autenticación no está habilitada. |
|
|
Contraseña de MongoDB. Omítala si la autenticación no está habilitada. |
|
|
Nombre de la base de datos que se va a supervisar. Es compatible con expresiones regulares. Use |
|
|
Nombre de la colección que se va a supervisar. Es compatible con expresiones regulares. Use |
|
|
Modo de inicio. Valores válidos: |
|
|
Deserializador para convertir objetos |
Referencias
Flink CDC (public preview): sincronice los datos y los cambios de esquema de MongoDB con las tablas descendentes (VVR 11.1 y posteriores).
Metrics: supervise el rendimiento de la tabla de origen.