El Viaje de la Consulta SQL: Reescritura de Queries

En el artículo anterior, exploramos cómo PostgreSQL transforma texto SQL en un Query Tree validado mediante análisis sintáctico y semántico. Al final de ese viaje, PostgreSQL sabe que tus tablas …
¡Bienvenido! Este es un blog sobre cómo funcionan las cosas por dentro. Si alguna vez te has preguntado qué sucede cuando tu código se ejecuta, cómo las bases de datos ejecutan consultas, o qué hacen los compiladores con tu código fuente, estás en el lugar correcto.
Escribo análisis profundos sobre los internals del software—cubriendo lenguajes de programación, compiladores, bases de datos, sistemas de archivos y más—pero con un giro: mi objetivo es hacer que los comportamientos internos complicados parezcan simples. Estas no son referencias exhaustivas; son descripciones accesibles que te dan la comprensión suficiente para apreciar la ingeniería inteligente detrás de las herramientas que usas todos los días.
Qué esperar: Los artículos aquí exploran temas como las fases del compilador de Go (lexer, parser, SSA), el modelo de objetos y la recolección de basura de Python, la ejecución de consultas en bases de datos, estructuras de sistemas de archivos y comportamientos en tiempo de ejecución como la asignación de memoria y las goroutines. Cada artículo toma un ejemplo concreto (como un programa “hello world”) y recorre lo que sucede internamente.
Cadencia de publicación: Publico un nuevo artículo cada semana, profundizando en un aspecto diferente de los internals del software con cada artículo.
Ya seas estudiante, becario o desarrollador experimentado curioso sobre los internals en los que normalmente no necesitas pensar, espero que estos artículos te den esos momentos “¡ajá!” que hacen que la programación sea aún más fascinante.

En el artículo anterior, exploramos cómo PostgreSQL transforma texto SQL en un Query Tree validado mediante análisis sintáctico y semántico. Al final de ese viaje, PostgreSQL sabe que tus tablas …

En el artículo anterior, exploramos cómo el comprobador de tipos del compilador de Go analiza tu código. Vimos cómo resuelve identificadores, verifica la compatibilidad de tipos y asegura que tu …

En el artículo anterior, exploramos cómo PostgreSQL establece conexiones y se comunica usando su wire protocol. Una vez que tu conexión está establecida y el proceso backend está listo, finalmente …

En los artículos anteriores, exploramos el scanner—que convierte código fuente en tokens—y el parser—que toma esos tokens y construye un Árbol de Sintaxis Abstracta.
En artículos futuros, cubriré la …

En el artículo anterior, exploramos el viaje completo que hace una consulta SQL a través de PostgreSQL—desde el parsing hasta la ejecución. Pero antes de que cualquiera de eso pueda suceder, tu …

En el artículo anterior del blog, exploramos el scanner—el componente que convierte tu código fuente de un flujo de caracteres en un flujo de tokens.
Ahora estamos listos para el siguiente paso: el …

¿Alguna vez te preguntaste qué sucede cuando escribes SELECT * FROM users WHERE id = 42; y presionas Enter? Esa consulta simple desencadena un viaje fascinante a través de los internals de …

Esta es parte de una serie donde te guiaré a través del compilador completo de Go, cubriendo cada fase desde código fuente hasta ejecutable. Si alguna vez te preguntaste qué sucede cuando ejecutas go …

¡Bienvenido! Estoy emocionado de finalmente lanzar este proyecto—algo en lo que he estado pensando durante casi una década.
Durante más de 10 años, he estado dando charlas en …