Prisma: ¿qué es y cuáles son sus ventajas?

Encuentra una mejor experiencia para tus proyectos de desarrollo

Diego Mendez
Nowports Tech and Product
5 min readDec 8, 2022

--

Ventajas de Prisma ORM

Cuando se comienza un nuevo desarrollo y se decide que la conexión a la base de datos se realizará utilizando un ORM, pueden surgir varias preguntas sobre ¿cómo manejar de forma clara los modelos?, ¿cómo lidiar con las migraciones? o ¿de qué manera gestionar el pool de conexiones? Por eso hoy me gustaría dejarlo claro en este artículo.

Prisma es un ORM Next-Generation (Object Relational Mapping) para Node, escrito en TypeScript, que ayuda con todo esto de forma fácil y clara. Y para que lo comprendas mejor, te invito a seguir leyendo para que descubras todo sobre este toolkit de base de datos.😉

Prisma ORM
Prisma ORM

Principales características de Prisma

Modelos

Al utilizar un ORM, una de las primeras cosas a buscar es que facilite mantener los modelos. Esto porque en muchas ocasiones, utilizando un ORM clásico como Sequelize, es difícil lograrlo, generalmente se generan con una sintaxis poco clara y no es fácil ver las relaciones entre ellos.

Prisma se aleja de la forma tradicional de definir modelos y se centra en lo que llama archivos de ‘schemas’ :

Archivo de Schema
Archivo de ‘schemas’

Como puedes ver, lo primero por hacer al definir un schema es establecer a qué proveedor de base datos se conectará, además de un string de conexión (mediante URL) a la base. Prisma soporta PostgreSQL, MySQL, SQLite, MongoDB, CockroachDB y Microsoft SQL Server.

Respecto a la definición de los modelos, Prisma tiene una sintaxis propia y muy intuitiva para definir los modelos y sus relaciones. Y también cuenta con un plugin de VS Code que ayuda con los tipos de datos y a autocompletar las relaciones.

Ahora bien, ¿qué pasa si la base ya está creada y lo que se necesita es conectarse a ella? Para esto Prisma también brinda una herramienta que crea un schema basado en una base de datos ya existente. Esto lo veremos más adelante.

Migraciones

Algo de lo que más dolores de cabeza da al usar los ORM son las migraciones, es decir, el manejo de cambios en la estructura de la base. Esto porque muchos requieren que se implementen archivos de migración de forma manual, generando así doble mantenimiento junto a los modelos, y otros, aunque se generan de forma automática, lo hacen con una sintaxis propia que dificulta entender qué cambios se van a aplicar a la base.

Las migraciones en Prisma se generan de forma automática basándose en los cambios en el archivo de schema, por lo tanto, evita el doble mantenimiento. Y lo mejor es que se genera un SQL estándar que facilita su entendimiento.

Asimismo, Prisma se encarga de aplicar y mantener el versionado de las migraciones de forma automática.

Command Line Interface (CLI)

Hasta ahora he hablado sobre cómo los modelos y las migraciones se generan automáticamente basadas en el schema, pero… ¿cómo se puede materializar todo esto?

Pues bien, Prisma cuenta con una interfaz de línea de comando (CLI) que permite generar, tanto los clientes TypeScript para realizar consultas, como los archivos SQL para hacer las migraciones.

Algunos de sus comandos son:

  • Prisma generate: genera los modelos de datos en TypeScript para realizar consultas.
  • Prisma migrate dev: genera las migraciones en el ambiente de desarrollo, basándose en el archivo de schema (y analiza sus cambios).
  • Prisma migrate deploy: es un comando que debe usarse en ambiente productivo. Aplica las migraciones faltantes.
  • Prisma db pull: genera un archivo schema basándose en una base de datos ya existente.

De hecho, si deseas profundizar en este tema, te recomiendo revisar toda la 👉documentación y el manual de instalación del CLI de Prisma.

Consultas

Como puedes notar, generar y mantener una base de datos con Prisma se puede hacer de forma simple e intuitiva, pero falta hablar de lo más importante: las consultas.

Si bien Prisma no se diferencía mucho de otros ORM a la hora de realizar consultas, sí facilita varias cosas. La primera (y más obvia) ventaja es que al estar basado en TypeScript, todo los modelos son tipados y esto reduce los errores, y la segunda es que cuenta con mucha documentación oficial.

Algunos ejemplos de consultas son:

Ejemplo de consulta en Prisma
Consulta en Prisma
Consulta de Prisma
Ejemplo de consultas de Prisma

Conexiones

Otra de las virtudes de un buen ORM es el manejo del pool de conexiones de forma automática. Y Prisma no es la excepción.

Prisma maneja de forma automática las conexiones generando un pool. Y su tamaño puede calcularse dependiendo de la cantidad de CPUs del servidor usando esta fórmula: num_physical_cpus * 2 + 1.

Ahora, si lo que se quiere es manejar el tamaño de forma manual, solo se debe pasar el parámetro en el string de conexión, así como en este ejemplo:

String de conexión en Prisma

Prisma es una excelente alternativa para tu proyecto

Finalmente, puedo concluir que el manejo unificado de modelos y migraciones, junto con un potente CLI y un motor de consultas muy flexible, es lo que convierte a Prisma en una de las mejores alternativas a utilizar cuando se trabaja con bases de datos.

Ahora que ya conoces más de sus funcionalidades y beneficios, intégralo a tus proyectos actuales y futuros, y sácale el máximo provecho.

¿Quieres leer más temas relacionados? 👉Visita el blog de Nowports Tech👈

--

--