Skip to main content

Migrar de MongoDB a Postgres

Migra tu aplicación de MongoDB a Postgres: convierte los esquemas de documentos en tablas relacionales, reescribe las consultas para usar un cliente de Postgres y migra tus datos.
AuthorCognition
CategoryMigraciones
FeaturesPlaybooks
1

Diseña el esquema de Postgres

Analiza tus colecciones de MongoDB y diseña equivalentes relacionales. Si tus datos incluyen varias colecciones con relaciones, crea primero un Diagrama Entidad-Relación para validar las decisiones de normalización antes de escribir cualquier SQL.Patrones clave de transformación:
  • Document IDs: Convierte los campos _id de MongoDB en claves primarias de tipo UUID o SERIAL
  • Nested objects: Descompón los objetos anidados en tablas independientes con relaciones de clave foránea
  • Arrays: Usa tipos de array de Postgres o tablas de unión independientes
  • Embedded documents: Extrae estos documentos a tablas relacionadas con una normalización adecuada
Una vez que el esquema esté listo, configura la seguridad: crea roles de Postgres con privilegios adecuados y habilita las políticas de Row Level Security (RLS, seguridad a nivel de fila) en las tablas que necesiten control de acceso a nivel de fila.
2

Migrar consultas y dependencias de backend

Reemplaza tu driver de MongoDB (por ejemplo, mongoose, mongodb) por una librería cliente de Postgres — Prisma, Drizzle, TypeORM o node-postgres según tu stack. Actualiza la configuración de tu entorno con DATABASE_URL o credenciales de conexión equivalentes.Patrones de migración de consultas:
  • Operaciones de búsqueda (find) → consultas SQL SELECT o métodos del ORM .findMany() / .select()
  • Pipelines de agregaciónJOINs, GROUP BY, subconsultas, funciones de ventana
  • Actualizaciones → sentencias SQL UPDATE
  • Inserciones → sentencias SQL INSERT o métodos de inserción masiva
Si tu aplicación usa autenticación JWT personalizada con un repositorio de usuarios en MongoDB, actualiza las consultas de búsqueda de usuarios para usar Postgres manteniendo la misma lógica de generación y validación de tokens.
3

Actualiza la capa de servicios del frontend

Actualiza los servicios de frontend para manejar cualquier cambio en la estructura de los datos derivado de la migración — lo más común es que _id pase a ser id. Mantén las firmas de los métodos de servicio existentes para que los componentes no necesiten cambios.
  • Actualiza los servicios de autenticación si cambió el flujo de autenticación
  • Ajusta el manejo de solicitudes y respuestas del cliente HTTP para las nuevas estructuras de datos
  • Actualiza los route guards y resolvers si cambiaron los patrones de recuperación de datos
4

Migrar datos y ejecutar pruebas de extremo a extremo

Exporta los datos de MongoDB, transfórmalos para que se ajusten al esquema de Postgres e impórtalos.Después de la importación, ejecuta la suite de pruebas completa contra el backend de Postgres. Verifica que todas las operaciones CRUD, los flujos de autenticación y el acceso basado en roles funcionen correctamente.
5

Implementar y optimizar

Implementa el despliegue con feature flags para un lanzamiento gradual. Mantén la instancia de MongoDB como respaldo durante la transición.Lista de comprobación posterior al despliegue:
  • Agrega índices para las columnas consultadas con frecuencia
  • Usa EXPLAIN ANALYZE para identificar consultas lentas
  • Configura el pool de conexiones (por ejemplo, PgBouncer)
  • Supervisa el rendimiento de las consultas y la utilización de las conexiones
  • Documenta los procedimientos de reversión ante problemas críticos
Una vez que todo esté estable y verificado, retira la instancia de MongoDB.
6

Haz que sea repetible con un playbook

Si necesitas ejecutar este patrón de migración en múltiples servicios o repositorios, guárdalo como un playbook para que cada sesión siga el mismo proceso. A continuación se muestra un ejemplo de playbook para una migración de MongoDB a Postgres: