¿Qué hay con Drizzle ORM?

Rate this content
Bookmark

Ya hay muchos ORMs en el mundo de JS, ¿por qué construir otro? En esta charla descubriremos por qué Drizzle es diferente de otras soluciones en el mercado, por qué lo consideramos un ORM de "día 1000" y cómo se siente ser un ORM sin cabeza. También profundizaremos en el ecosistema de Drizzle y veremos soluciones que mejorarán enormemente tu experiencia de drizzling™.

This talk has been presented at JSNation 2024, check out the latest edition of this JavaScript Conference.

Dan Kochetov
Dan Kochetov
8 min
17 Jun, 2024

Comments

Sign in or register to post your comment.
  • Dan Kochetov
    Dan Kochetov
    Drizzle Team
    It's not a priority for the team - there are no noticeable issues with runtime performance at the moment that would justify spending time on it.
  • Sean Kelly
    Sean Kelly
    Munster Bovine
    Hey Dan, why not take advantage of workers?
  • Dan Kochetov
    Dan Kochetov
    Drizzle Team
    Sean, Drizzle doesn't utilize multi-threading on its own, since Node.js is single-threaded by default.

Video Summary and Transcription

Drizzle es un ORM de TypeScript que aprovecha el conocimiento de SQL, es rápido y tiene su propio ecosistema. Gestiona el esquema de la base de datos y admite declaraciones preparadas para un rendimiento óptimo. Drizzle proporciona un conjunto completo de herramientas, incluyendo Drizzle Studio y ejecutores de consultas. El ecosistema incluye integración con GraphQL y herramientas creadas por la comunidad.

1. Introducción a Drizzle

Short description:

Drizzle es un ORM de TypeScript que aprovecha tu conocimiento de SQL, utiliza TypeScript de principio a fin y tiene tanto una API CRUD similar a SQL como una API relacional. Funciona con todas las principales bases de datos y proveedores de la nube, es rápido y tiene su propio ecosistema. Todo lo que escribes con Drizzle está en TypeScript, no se requiere ningún lenguaje adicional. Si conoces SQL, conoces Drizzle. Administra el esquema de tu base de datos por ti.

Hola, soy Dan, soy cofundador del equipo de Drizzle. Y hoy voy a hablar sobre el ORM de Drizzle. Entonces, ¿qué es Drizzle? Básicamente es como una pequeña lluvia. Es una especie de condición climática, ¿verdad? Y por pura casualidad, también es un ORM de TypeScript. Así que hablemos de eso. Fuimos superados en 2007 y luego nuevamente en 2008, y luego perdimos ante Eloquent incluso antes de que existiéramos. Como puedes ver, ha sido un viaje difícil, pero de todos modos, ¿qué es Drizzle en realidad esta vez?

Como dije, Drizzle es un ORM de TypeScript que tiene varias características únicas en comparación con otros ORMs. En primer lugar, aprovecha tu conocimiento de SQL en lugar de obstruirlo. También utiliza TypeScript de principio a fin, por lo que solo necesitarás escribir código en TypeScript y nada más. Tiene tanto una API CRUD similar a SQL como una API relacional para datos relacionales complejos. Funciona con todas las principales bases de datos y proveedores de la nube. Es bastante rápido en comparación con ejecutar SQL sin procesar. Y tiene su propio ecosistema, que incluye una herramienta de gestión de migraciones, un visor de datos y mucho más. Así que vamos a sumergirnos.

Drizzle está completamente escrito en TypeScript. Fue diseñado teniendo en cuenta TypeScript y lo aprovecha al máximo. Todo lo que escribes con Drizzle, desde el esquema hasta las consultas, se reescribe en TypeScript. No hay ningún lenguaje adicional que necesites aprender primero. No hay un paso de compilación en cada cambio de código. Todo es dinámico y familiar. Es posible que hayas notado que la definición de la tabla en la diapositiva anterior se parece mucho a SQL. Y eso es a propósito. Toda la filosofía de Drizzle es que si conoces SQL, conoces Drizzle. Todas las API de consultas se asemejan estrechamente a sus contrapartes en SQL. Incluso no necesitas aprender una nueva API. Simplemente escribes SQL como estás acostumbrado, solo en TypeScript. Y el resultado siempre es predecible. No necesitas adivinar qué consulta se ejecutará en la base de datos. Es exactamente lo que has escrito, y el resultado siempre es completamente seguro en cuanto a tipos. Drizzle no solo te permite escribir SQL en TypeScript, también puede administrar el esquema de tu base de datos por ti.

2. DrizzleKit y Rendimiento

Short description:

Drizzle viene con una herramienta de línea de comandos llamada DrizzleKit que genera migraciones basadas en cambios de esquema. Reconoce casos comunes como el cambio de nombre de columnas. Drizzle es un envoltorio delgado alrededor de SQL, minimizando la sobrecarga. Admite declaraciones preparadas para un rendimiento óptimo. La API relacional permite realizar consultas convenientes en datos relacionales complejos, proporcionando una sintaxis simple pero potente y manteniendo un rendimiento óptimo.

Viene con una herramienta de línea de comandos llamada DrizzleKit, que, entre otras cosas, puede generar las migraciones basadas en los cambios de esquema. Todo lo que tienes que hacer es ejecutar DrizzleKit generate, y calculará las diferencias que has realizado en el esquema y generará una migración SQL. También es lo suficientemente inteligente como para reconocer algunos casos comunes, como el cambio de nombre de una columna, por ejemplo.

¿Y ahora, es Drizzle rápido? Bueno, no exactamente. Verás, la cosa es que SQL ya es bastante rápido por sí solo. Así que todo lo que tenemos que hacer es no ralentizarlo. Drizzle intenta ser un envoltorio delgado alrededor de SQL y hace la menor cantidad de cosas posible además de simplemente ejecutar la consulta. Por lo tanto, su sobrecarga en comparación con la ejecución de SQL es mínima. Siempre hemos construido Drizzle teniendo en cuenta el rendimiento. Por lo tanto, también tiene soporte para declaraciones preparadas, algo que realmente no vimos implementado en otros ORMs a nuestro alcance. Con declaraciones preparadas, puedes reducir aún más la sobrecarga para lograr un rendimiento óptimo.

Ahora, hablemos un poco sobre la API relacional. Su objetivo principal es consultar datos relacionales complejos, como relaciones uno a muchos, por ejemplo, en un formato conveniente. Entonces, en este ejemplo, ciertamente puedes obtener los mismos datos utilizando consultas SQL básicas con uniones y luego agregarlos en código para obtener el mismo resultado. Pero eso puede no ser tan conveniente de escribir. Por otro lado, con las consultas relacionales, tienes una sintaxis simple pero potente para consultar tus datos relacionales sin mucho problema. Ahora tienes múltiples oportunidades. Puedes tener un control total sobre tus consultas para ejecutar las declaraciones SQL exactas que necesitas, y puedes obtener fácilmente datos relacionales de cualquier complejidad sin comprometer el rendimiento. Esto se debe a que cada consulta relacional, sin importar su tamaño, siempre se transforma en una única declaración SQL, lo que resulta en exactamente una ida y vuelta a la base de datos.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Rome, ¡una cadena de herramientas moderna!
JSNation 2023JSNation 2023
31 min
Rome, ¡una cadena de herramientas moderna!
Top Content
Rome is a toolchain built in Rust that aims to replace multiple tools and provide high-quality diagnostics for code maintenance. It simplifies tool interactions by performing all operations once, generating a shared structure for all tools. Rome offers a customizable format experience with a stable formatter and a linter with over 150 rules. It integrates with VCS and VLSP, supports error-resilient parsing, and has exciting plans for the future, including the ability to create JavaScript plugins. Rome aims to be a top-notch toolchain and welcomes community input to improve its work.
Mejorando la Felicidad del Desarrollador con IA
React Summit 2023React Summit 2023
29 min
Mejorando la Felicidad del Desarrollador con IA
GitHub Copilot is an auto-completion tool that provides suggestions based on context. Research has shown that developers using Copilot feel less frustrated, spend less time searching externally, and experience less mental effort on repetitive tasks. Copilot can generate code for various tasks, including adding modals, testing, and refactoring. It is a useful tool for improving productivity and saving time, especially for junior developers and those working in unfamiliar domains. Security concerns have been addressed with optional data sharing and different versions for individuals and businesses.
Análisis estático en JavaScript: Lo fácil y lo difícil
JSNation 2023JSNation 2023
23 min
Análisis estático en JavaScript: Lo fácil y lo difícil
Static analysis in JavaScript involves analyzing source code without executing it, producing metrics, problems, or warnings. Data flow analysis aims to determine the values of data in a program. Rule implementation in JavaScript can be straightforward or require extensive consideration of various cases and parameters. JavaScript's dynamic nature and uncertainty make static analysis challenging, but it can greatly improve code quality.
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
JSNation 2024JSNation 2024
20 min
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
The Talk discusses browser automation using the Worker's Browser Rendering API, which allows tasks like navigating websites, taking screenshots, and creating PDFs. Cloudflare integrated Puppeteer with their workers to automate browser tasks, and their browser rendering API combines remote browser isolation with Puppeteer. Use cases for the API include taking screenshots, generating PDFs, automating web applications, and gathering performance metrics. The Talk also covers extending sessions and performance metrics using Durable Objects. Thank you for attending!
Conquistando la Complejidad: Refactorizando Proyectos JavaScript
JSNation 2024JSNation 2024
21 min
Conquistando la Complejidad: Refactorizando Proyectos JavaScript
Today's Talk explores the complexity in code and its impact. It discusses different methods of measuring complexity, such as cyclomatic complexity and cognitive complexity. The importance of understanding and conquering complexity is emphasized, with a demo showcasing complexity in a codebase. The Talk also delves into the need for change and the role of refactoring in dealing with complexity. Tips and techniques for refactoring are shared, including the use of language features and tools to simplify code. Overall, the Talk provides insights into managing and reducing complexity in software development.

Workshops on related topic

Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
JSNation 2023JSNation 2023
44 min
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
WorkshopFree
Ryan Albrecht
Ryan Albrecht
¿Conoces ese molesto error? ¿El que no aparece localmente? Y no importa cuántas veces intentes recrear el entorno, no puedes reproducirlo. Has revisado las migas de pan, leído la traza de pila y ahora estás jugando al detective para unir los tickets de soporte y asegurarte de que sea real.
Únete al desarrollador de Sentry, Ryan Albrecht, en esta charla para aprender cómo los desarrolladores pueden utilizar la Reproducción de Sesiones, una herramienta que proporciona reproducciones de video de las interacciones de los usuarios, para identificar, reproducir y resolver errores y problemas de rendimiento más rápido (sin golpear tu cabeza contra el teclado).