Las migraciones de datos modernas rara vez implican un simple traslado; requieren transformación, limpieza y enriquecimiento para que las aplicaciones puedan aprovechar inmediatamente las ventajas de la plataforma de destino. El servicio Eventing de Couchbase Capella permite realizar transformaciones en línea impulsadas por eventos a medida que llegan los datos, lo que permite a los equipos remodelar esquemas, normalizar valores, enriquecer con metadatos y preparar documentos para SQL++, búsqueda, análisis y sincronización móvil desde el principio.
Objetivos
-
-
- Ofrece un patrón de migración repetible y basado en eventos desde cualquier base de datos relacional o no relacional a Couchbase Capella, que transforma los datos en tiempo real para su uso inmediato en aplicaciones y análisis.
En este ejemplo, utilizaremos MongoDB Atlas como base de datos de origen. - Proporcionar una implementación de referencia mínima y lista para la producción utilizando cbimport y Capella Eventing para convertir esquemas de origen (por ejemplo, decimales, estructuras anidadas, identificadores) en modelos optimizados para consultas.
- Describa las medidas de seguridad operativas, los requisitos previos y los pasos de validación para que los equipos puedan trabajar con confianza, con resultados predecibles y opciones de reversión si fuera necesario.
- Ofrece un patrón de migración repetible y basado en eventos desde cualquier base de datos relacional o no relacional a Couchbase Capella, que transforma los datos en tiempo real para su uso inmediato en aplicaciones y análisis.
-
¿Por qué la migración basada en eventos?
-
-
- La transformación en línea reduce el trabajo posterior a la migración al aplicar la normalización y el enriquecimiento del esquema a medida que llegan los documentos, lo que acelera la transición y reduce el riesgo.
- Las funciones de eventos mantienen las transformaciones controladas por el código fuente y auditables, por lo que los cambios son coherentes, comprobables y repetibles en todos los entornos.
- El resultado son datos listos para Capella que admiten SQL++, búsqueda de texto completo, búsqueda vectorial, análisis y servicios de aplicaciones sin fases de refactorización intermedias.
-

Requisitos previos
-
-
- Instale Herramientas de base de datos MongoDB (incluye mongoexport, mongoimport, etc.)
- Descargar Couchbase CLI
- Cuenta Capella de pago y acceso al clúster, con las direcciones IP permitidas configuradas y el certificado raíz de Capella descargado y guardado como ca.pem
- Cree los siguientes artefactos en Couchbase Capella:
-
- Un cubo con nombre: Prueba
- Alcance bajo cubeta: Prueba con nombre: muestra_airbnb
- Dos colecciones con nombres listadoYreseñasTemp y listado y reseñas
- Una función Javascript con nombre transformación de datos
Haga clic para ver los videos a continuación y vea el Configuración de Capella y creación de acceso al clúster pasos.
-
- Credenciales con acceso de lectura/escritura al bucket/ámbito/colecciones de destino y herramientas CLI instaladas para las utilidades de importación cbimport y exportación MongoDB.
- Cadenas de conexión para MongoDB Atlas (fuente) y Couchbase Capella (destino), además de una colección temporal para la ingesta inicial antes de la transformación.
-
Ejemplo de código fuente utilizando MongoDB Atlas
Un documento representativo de Airbnb ilustra las necesidades de transformación más comunes: normalización decimal, manejo de identificadores, campos anidados y aplanamiento para mejorar el rendimiento de las consultas.
Algunos ejemplos de campos son: url_del_anuncio, metadatos del anfitrión, dirección con coordenadas y envoltorios decimales para campos como baños y precio utilizando el formato JSON extendido de MongoDB.
Patrón de transformación de eventos
-
-
- Utilice una colección temporal como fuente de Eventing (listadoYreseñasTemp) y una colección de destinos (listado y reseñas) para que los documentos transformados mantengan la migración. idempotente y comprobable.
- Convertir los decimales JSON extendidos de MongoDB a números nativos, renombrar campos para facilitar la lectura del dominio, derivar una clave Couchbase a partir de la original. _id, y sellar los documentos con migrado_en.
-
Paso 1: Exportar desde MongoDB
Exportar documentos a JSON utilizando mongoexport con –jsonArray para generar una lista limpia para la importación por lotes en Couchbase.
Siga este video sobre la ejecución del comando de exportación de Mongo:

Ejemplo de sintaxis:
|
1 2 3 4 5 6 7 8 |
mongoexport \ --uri="mongodb+srv://cluster0.xxxx.mongodb.net/test" \ --nombre de usuario=Prueba \ --contraseña=Prueba_123 \ --base de datos de autenticación admin \ --colección=listado y reseñas \ --fuera=listado y reseñas.json \ --jsonArray |
Paso 2: Implementar Eventing
-
-
- Configure la función Eventing con la colección temporal como fuente (listadoYreseñasTemp) y la colección de destino (listado y reseñas) como destino, y luego impleméntelo para transformar y escribir documentos automáticamente.
- Supervise las métricas de éxito y los registros en Eventing; verifique los recuentos y las muestras aleatorias en Data Tools para confirmar la fidelidad y la conformidad con el esquema.
- Ver el video para la configuración y la implementación
-
Código: Función de eventos (OnUpdate)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
función OnUpdate(doc, meta) { pruebe { // Procesar directamente cada mutación de documento en el cubo de origen. var newId = doc._id ? doc._id.toString() : meta.id; <fuerte> </fuerte>var documento transformado = { listadoId: newId, url: doc.url_del_anuncio, título: doc.nombre, resumen: doc.resumen, tipo: doc.tipo_de_propiedad, habitación: doc.tipo_de_habitación, acomoda: doc.acomoda, habitaciones: doc.habitaciones, camas: doc.camas, baños: parseFloat(doc.baños?.$númeroDecimal || doc.baños) || null, precio: parseFloat(doc.precio?.$númeroDecimal || doc.precio) || null, imagen: doc.imágenes?.url_imagen, host: { id: doc.host?.id_host, nombre: doc.host?.nombre_del_host, ubicación: doc.host?.host_ubicación }, dirección: { calle: doc.dirección?.calle, país: doc.dirección?.país, coordenadas: doc.dirección?.ubicación?.coordenadas }, migrado_en: nuevo Fecha().toISOString() }; // Utilizar una nueva clave con prefijo en el depósito de destino. dst_bucket[newId] = documento transformado; } captura (e) { registro("Error durante la transformación:", e); } } |
Paso 3: Importar a la colección temporal
Ingesta JSON exportado en una colección temporal (listadoYreseñasTemp) utilizando cbimport con formato de lista y certificado TLS de Capella.
Ejemplo de sintaxis:
|
1 2 3 4 5 6 7 8 9 10 |
cbimport json \ -c sofás cama://cb.xxxx.cloud.couchbase.com \ -u MiUsuario \ -p MiContraseña \ --cubo Prueba \ --alcance muestra_airbnb \ --colección listadoYreseñasTemp \ --formato lista \ --archivo listado y reseñas.json \ --cacert MiCert.pem |
Ver el Importación de datos de Couchbase pasos:

Mantenga vacía la colección de destino durante esta fase: Eventing la rellenará después de la transformación.
Lista de verificación de validación
-
-
- El recuento de documentos entre el origen y el destino transformado se ajusta a las variaciones esperadas para los campos filtrados y las transformaciones.
- Los campos numéricos analizados a partir de JSON extendido (por ejemplo, precio, baños) coinciden con los rangos numéricos esperados, y las claves se asignan uno a uno con los ID originales.
- Las consultas representativas en SQL++ (búsqueda por host, proximidad geoespacial por coordenadas, filtros de rango de precios) devuelven los resultados esperados en los datos transformados.
- Al importar documentos a Couchbase, el nuevo ID será UUID en la colección listingAndReviewsTemp.
- El script de eventos proporcionado eliminará _id campo del identificador único de MongoDB, cambie el campo ID del documento de UUID al valor de _id tal y como estaba en MongoDB
- Ver el validación de importación vídeo
-
Consejos operativos
-
-
- Ejecutar primero en lotes pequeños para validar el rendimiento de Eventing y la postura de relleno; ampliar una vez que el rendimiento de la transformación sea estable.
- Mantenga la función Eventing versionada; pruebe los cambios en entornos que no sean de producción con colecciones idénticas y una instantánea de los datos exportados antes de promocionarlos.
- Aplicar TTL en la recopilación temporal listadoYreseñasTemp para ahorrar en costos de almacenamiento. Leer Más información sobre TTL en la documentación de Couchbase
-
Casos de uso ampliados
-
-
- Comercio electrónico: normalice los precios y las divisas, enriquezca con el estado del inventario y desnormalice los atributos de las referencias para agilizar las consultas sobre los detalles de los productos.
- Tuberías de IoT: agregue las lecturas de los sensores por dispositivo/ventana de tiempo y marque las anomalías en la ingesta para reducir la latencia del procesamiento posterior.
- Perfiles de usuario: estandarice los correos electrónicos y números de teléfono, obtenga campos geográficos y adjunte metadatos de consentimiento y auditoría para obtener conjuntos de datos listos para el cumplimiento normativo.
- Consolidación de múltiples bases de datos: armoniza esquemas heterogéneos en un modelo unificado que se adapta a las funciones SQL++, FTS y Vector Search de Capella.
- Catálogos de contenido: aplana los metadatos multimedia anidados, extrae palabras clave buscables y calcula previamente facetas para experiencias de descubrimiento de baja latencia.
- Registros financieros: convierta tipos decimales y de fecha, adjunte etiquetas de linaje y conciliación, y envíe las excepciones para su revisión manual en el momento de la ingesta.
-
¿Qué sigue?
-
-
- Agregue sincronización incremental reutilizando la colección temporal como zona de aterrizaje para los deltas y permitiendo que Eventing realice inserciones y actualizaciones en el destino para una migración continua.
- Aplique FTS e índices vectoriales sobre documentos transformados para habilitar patrones de búsqueda semánticos e híbridos después de la transición sin ciclos de reindexación.
- Transmita continuamente los datos de diversas fuentes relacionales y no relacionales a Couchbase para escenarios de migración de datos en vivo utilizando tecnologías de transmisión de datos o ETL. Algunos ejemplos son:
-
Conclusión
La migración basada en eventos convierte una transferencia única en un canal de transformación duradero que genera datos limpios y listos para consultar en Capella con un trabajo de posprocesamiento mínimo. Al exportar desde MongoDB, importar a una colección temporal y aplicar una transformación Eventing controlada, el modelo de destino está listo para SQL++, Search, Analytics y App Services desde el primer día.
Empezar gratis
Inicie un entorno Capella y pruebe este patrón de principio a fin con una pequeña muestra para validar las asignaciones, el rendimiento y el comportamiento de las consultas antes de escalar.
Inicie su clúster de nivel gratuito Regístrese para obtener el nivel gratuito ¡para realizar su experimento hoy mismo!