Introducción

1

Conexiones a Bases de Datos con Time OEM y NetsGIS

2

Integración de Datos con Next.js y Time ORM en Proyectos E-commerce

Database

3

Instalación de Docker en Windows, macOS y Ubuntu

4

Configuración de Postgres en Docker Compose

5

Conexión a Postgres en Docker: Terminal y PgAdmin

6

Conexión de NestJS a Postgres con Node Postgres

7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL

8

Conexión a Bases de Datos con Variables de Entorno en Node.js

TypeORM

9

Implementación de TypeORM con NestJS en Proyectos Node.js

10

Creación de Entidades en ORM para Tiendas Virtuales

11

Implementación del Patrón Repository en NestJS con TypeORM

12

Operaciones CRUD en ProductService usando TypeORM y Postgres

13

Cambio de Postgres a MySQL en Docker para CRUD de Productos

Migraciones

14

Configuración de Migraciones en Bases de Datos con TimeORM

15

Configuración y uso de migraciones con TimeORM y TypeScript

16

Ejecución y gestión de migraciones con Time1M en Node.js

17

Migraciones en bases de datos: agregar campos automáticamente

Relaciones

18

Relaciones 1 a 1 en Bases de Datos con TimeORM

19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios

20

Relaciones Uno a Muchos en Bases de Datos con TypeORM

21

Gestión de Relaciones Uno a Muchos en Controladores de API

22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico

23

Manipulación de Relaciones Muchos a Muchos en Controladores

24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript

25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM

26

CRUD de órdenes de compra y gestión de ítems en NestJS

Consultas

27

Paginación de Productos con Limit y Offset en Controladores API

28

Filtrado de Precios con Rango Usando Between en Time Wareham

29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones

30

Buenas prácticas de nombramiento en JavaScript y bases de datos

31

Serialización y Transformación de Datos en APIs con ClassTransformer

Migración a NestJS 9 y TypeORM 0.3

32

Actualización de dependencias en NEST y TimeWareM

33

Migración y ajustes en TimewareM 0.3: Cambios en métodos y servicios

34

Actualización de Migraciones en TimeWareM 0.3

Próximos pasos

35

Soluciones a referencias circulares en módulos NestJS

36

Persistencia de Datos con Time Ware M: Conexiones y Buenas Prácticas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Configuración de Migraciones en Bases de Datos con TimeORM

14/36
Recursos

¿Qué son las migraciones en bases de datos relacionales?

Las migraciones son esenciales en el manejo de bases de datos relacionales, asegurando modificaciones seguras y controladas. En el ámbito de programación, especialmente en el desarrollo de software, es crucial entender cómo manejar estas migraciones dado que una mala práctica en su uso puede poner en riesgo la integridad de tus datos. Aquí exploraremos cómo funcionan y por qué son indispensables.

¿Por qué las migraciones son importantes?

Las migraciones permiten controlar y mantener los cambios en la estructura de una base de datos a lo largo del tiempo. Facilitando que los desarrolladores puedan compartir y aplicar estos cambios de manera consistente en diferentes entornos, como pruebas y producción.

En el caso del uso del flag "Synchronize" de TypeORM, el hecho de que automáticamente sincroniza los cambios al ejecutar un proyecto puede ser útil para ambientes de desarrollo. Sin embargo, no se recomienda para producción ya que cualquier cambio accidental en el código podría alterar la base de datos de manera no deseada.

¿Cómo describen las migraciones algunos de los principales frameworks?

Entender cómo diferentes frameworks manejan las migraciones nos ayuda a comprender su importancia y funcionalidad.

  1. Django: Este popular framework en Python describe las migraciones como el mecanismo que usa para propagar los cambios hechos en los modelos o entidades hacia la base de datos. Esto incluye la adición o eliminación de campos.

  2. Laravel: Un marco de trabajo en PHP, Laravel, asocia las migraciones con un control de versión de la base de datos. Permitiendo que los equipos de desarrollo compartan y definan el esquema de la base de datos a lo largo de la aplicación.

  3. TypeORM: Este ORM de TypeScript indica que las migraciones son simplemente archivos que contienen queries SQL. Esos archivos se utilizan para actualizar el esquema de la base de datos o aplicar cambios en una base ya existente.

¿Cómo influyen las migraciones en el control de esquemas?

En resumen, las migraciones permiten alterar y versionar los esquemas de bases de datos de manera controlada. De tal manera que cada vez que se crea una nueva entidad o se altera un campo, se genera una migración que asegura dichos cambios. Esto disminuye los riesgos de corrupción de datos o pérdida de información crítica.

En las próximas etapas de nuestro aprendizaje, se configurarán y utilizarán migraciones con TypeORM, demostrando cómo puedes adoptar estas prácticas para mejorar la seguridad y eficiencia en tus proyectos de bases de datos.

Consideraciones finales

  • Ambiente de desarrollo vs. producción: Utiliza la sincronización automática exclusivamente en entornos de desarrollo.
  • Documentación constante: Mantén claras las migraciones y sus intenciones.
  • Fomenta la colaboración: Un buen manejo de migraciones facilita que todo el equipo trabaje cohesivamente.

Con todo esto en mente, estarás bien preparado para maximizar el uso de las migraciones en tus proyectos, asegurando un desarrollo más seguro y organizado. Sigue adelante en tu aprendizaje, y verás cómo estas prácticas mejoran la manera en que manejas tus bases de datos.

Aportes 5

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Formas de controlar los cambios en la base de datos

sync mode

flag synchronize: true esto hace que los cambios que hagamos sobre nuestro modelo de clases impacte directamente en las tablas.

recomendaciones

Solo sobre entorno de desarrollo y testing. En produccion es una practica riesgosa, porque cualquier cambio en el codigo, se pueda corromper la base de datos. Para eso se crearon las migraciones

Django

Dice que las migraciones es la forma que django propaga los modelos a las bases de datos

Laravel

son como un control de version de la bd permitiendo que el equipo pueda definir y compartir el esquema de la base de datos.

TypeORM

Las migraciones son solo un con query tipo sql con el esquema y los cambios aplicados (updates).

synchronize: true, //! Solo usar en development o testing, NO EN PRODUCCIÓN
# Sync mode vs migrations ## ¿Qué es Sync mode? Es la forma en la que veníamos trabajando para actualizar la base de datos. Es decir que TypeORM creaba las tablas de manera sincronizada con nuestros archivos de entities, es decir con nuestros schemas. Esto no es una buena practica para el ambiente de producción, debido a que cualquier cambio en los schemas podría corromper nuestra base de datos. Lo recomendable es crear las tablas o actualizar la base de datos mediante migraciones. ## ¿Qué son las migraciones? *Las migraciones son como un **git** para bases de datos **relacionales**, para no tener que reemplazar toda la base de datos sino solo agregar los cambios correspondientes.* Las migraciones son: > Las migraciones son la forma en que Django propaga cambios en los modelos y los refleja en el esquema de bases de datos. - Django. > Las migraciones son como un sistema de control de versiones para la base de datos. - Laravel. > Las migraciones son solo un con query tipo sql con el esquema y los cambios aplicados (updates). - TypeORM. Básicamente, las migraciones **mantienen el historial** del esquema que se lleva en la base de datos. Es un sistema muy usado en ambientes de producción para **trackear** los **cambios** sin tener que replicar todo nuevamente *(creación de tablas, llaves foráneas, etc)*. Es decir, permite saber en qué punto estaba para saber qué es lo que se tiene que modificar.

Sync Mode en TypeORM es una opción que se puede utilizar cuando se está trabajando con una base de datos de TypeORM. Sync Mode indica si TypeORM debe sincronizar la estructura de la base de datos con el modelo de entidades que se está utilizando. Si Sync Mode está habilitado, TypeORM comparará la estructura de la base de datos con el modelo de entidades y, si hay alguna diferencia, modificará la base de datos para que coincida con el modelo de entidades.

Las migraciones, por otro lado, son un proceso que se utiliza para realizar cambios en la estructura de una base de datos de manera controlada y documentada. Las migraciones se pueden utilizar para hacer cosas como agregar o eliminar tablas, modificar columnas existentes o agregar nuevas columnas a una tabla. Al utilizar migraciones, se puede tener un control más preciso sobre los cambios que se están realizando en la base de datos y revertir cambios si es necesario.

En general, Sync Mode es útil cuando se está trabajando en un entorno de desarrollo y se quiere que TypeORM se encargue de mantener la base de datos sincronizada con el modelo de entidades. Las migraciones, por otro lado, son más adecuadas para entornos de producción, ya que permiten un mayor control y documentación de los cambios que se realizan en la base de datos.

Yo entiendo las migraciones como otra forma de crear la estructura de la base de datos a medida que se desarrolla el backend. Sin embargo, no estoy seguro si en un ambiente de producción se trabaja de esta manera, es decir, creando la BD al vuelo. Más bien yo creería que la base de datos ya está desarrollada y si se modifica su estructura eso se hace desde la propia herramienta para administrar bd (pgamin, phpmyadmin)