Reviviendo Pinba: El motor de MySQL que olvida a propósito

Pinba, el motor de MySQL que olvida datos a propósito, ha sido revivido. Descubre cómo una herramienta de monitoreo de 15 años funciona en bases de datos

sábado, 25 de julio de 2026 • 6 min de lectura • Equipo Q2BSTUDIO

Cómo resucitar un monitor de 15 años

En el mundo del desarrollo de software, la memoria es un bien preciado. Pero, ¿qué pasaría si existiera una tabla de base de datos diseñada específicamente para olvidar? Esa es la esencia de Pinba, un motor de almacenamiento para MySQL que nació en 2009 dentro de Badoo, la plataforma de citas. Pinba no es una base de datos tradicional: es un servidor de monitorización disfrazado de base de datos. Su propuesta es radical: almacena estadísticas en tiempo real de las peticiones web de los últimos 15 minutos y luego las descarta para siempre. Reinicia MySQL y los datos desaparecen sin que nadie se preocupe. Esta amnesia programada es, precisamente, su mayor fortaleza.

La historia de Pinba comienza con Andrey Nigmatulin, el creador de PHP-FPM, y Antony Dovgal, un desarrollador veterano del núcleo de PHP. Ambos trabajaban en Badoo, un entorno con cientos de servidores PHP y despliegues continuos. Las herramientas de monitorización existentes, como Zabbix, indicaban que un servidor estaba saturado, pero no revelaban qué código concreto lo estaba provocando. La solución fue un motor que recibe métricas mediante paquetes UDP, sin establecer conexión, sin esperar respuesta. Si el paquete se pierde, no importa: se agregan millones de ellos. Si el servidor de monitorización falla, la web ni se entera. Esa arquitectura es lo que hace a Pinba inmunemente seguro: un sistema de monitorización que puede tumbar la producción es peor que no tener monitorización.

Todo reside en memoria RAM, en buffers circulares preasignados. No hay escritura en disco, ni operaciones de entrada/salida que puedan convertirse en cuellos de botella. Las agrupaciones se calculan sobre la marcha, a medida que llegan los paquetes. Consultar report_by_script_name no necesita escanear millones de filas; la respuesta ya está calculada en memoria. Así, con unas simples líneas de SQL, un desarrollador puede saber qué páginas están consumiendo más recursos en ese mismo instante, no en logs de ayer.

Sin embargo, el tiempo no perdona. El proyecto original dejó de recibir actualizaciones alrededor de 2016. La API de los plugins de motor de almacenamiento de MySQL cambió drásticamente con las versiones 8.0 y 8.4 LTS. El código de 2009 no compilaba con compiladores modernos. Las empresas que confiaban en Pinba se enfrentaban a una decisión difícil: congelar sus bases de datos en MySQL 5.7 o perder la herramienta. Hasta que en 2024 un ingeniero backend con dos décadas de experiencia, que había usado Pinba a diario durante más de diez años, decidió que un cierre así no era aceptable para una herramienta tan bien concebida. Nació el fork que hoy revive el proyecto.

La resurrección no fue sencilla. Había que actualizar el sistema de compilación de autoconf a CMake, migrar el código a C++23, limpiar la gestión de protobuf (reutilizando el runtime que ya incluye MySQL), y hacer que el mismo árbol de código generara plugins separados para MySQL 8.0, 8.4, MariaDB 10.11 y 11.8. Se añadieron herramientas modernas: clang-format, clang-tidy, cppcheck, AddressSanitizer, UndefinedBehaviorSanitizer, CodeQL. Fue un trabajo de ingeniería inversa y adaptación que, según el autor, habría sido imposible sin asistencia de inteligencia artificial. Los modelos de IA ayudaron a modernizar el código de threading, manejo de protobuf y gestión de memoria escrito para una base de datos de hace quince años. Cada pocos meses, las herramientas de IA eran más inteligentes y la hoja de ruta se ampliaba.

El resultado de ese esfuerzo es un motor que no solo funciona en bases de datos modernas, sino que además ha revelado errores ocultos durante quince años. Por ejemplo, un fallo en la inicialización de un puntero next en la lista de tareas del pool de hilos provocaba caídas aleatorias en MariaDB, pero nunca en MySQL, por una casualidad del asignador de memoria de glibc. LeakSanitizer descubrió una fuga de memoria lenta al sobrescribir claves en el mapa de informes. CodeQL encontró operaciones aritméticas con snprintf sin verificar que podían desbordar buffers. Cada uno de estos errores era pequeño, antiguo, y ahora está cubierto por pruebas. Si mantienes un código C antiguo y no lo has ejecutado con sanitizadores, probablemente tengas sorpresas desagradables esperándote.

La parte final de la resurrección no es código, sino logística. Un plugin de motor de almacenamiento debe coincidir exactamente con la versión del servidor MySQL. Las versiones de parche se publican con su propio calendario. Para no tener que perseguir esas actualizaciones a mano, el fork implementó un flujo de CI que vigila las nuevas versiones de MySQL, abre pull requests automáticos y, tras pasar las pruebas, publica imágenes Docker multi-arquitectura (x86_64 y ARM), paquetes DEB en un PPA de Ubuntu y paquetes RPM en Fedora COPR. Las imágenes Docker se descargan unas 3.100 veces al mes. Una herramienta diseñada para monitorizar la producción es ahora monitorizada por robots.

¿Qué lecciones podemos extraer de esta historia para el desarrollo de software empresarial? Primero, que la elección de una arquitectura importa más que la popularidad. Pinba sobrevivió porque sus decisiones de diseño —UDP sin conexión, buffers circulares en RAM, agregaciones en memoria— eran intrínsecamente robustas. Segundo, que el mantenimiento del software heredado es un desafío real que requiere inversión en herramientas modernas y, a menudo, en inteligencia artificial para acelerar la migración. Tercero, que la monitorización no debe ser un punto único de fallo. Y cuarto, que las empresas necesitan socios tecnológicos que entiendan tanto el legado como la innovación.

En Q2BSTUDIO, somos especialistas en este tipo de transformaciones. Ayudamos a las organizaciones a modernizar sus sistemas legacy, migrar a la nube (AWS o Azure), fortalecer su ciberseguridad, y aprovechar la inteligencia artificial para automatizar procesos y obtener inteligencia de negocio con herramientas como Power BI. Si tu empresa utiliza bases de datos antiguas, aplicaciones monolíticas o necesita software a medida que evolucione con el tiempo, podemos ayudarte a dar el salto sin perder funcionalidad. La historia de Pinba demuestra que incluso el código más abandonado puede renacer cuando se aplican las técnicas y el talento adecuados.

Para los desarrolladores que quieran probar Pinba, el fork moderno está disponible en GitHub. Basta con ejecutar un contenedor Docker con la imagen xolegator/pinba-engine:8.4, exponer el puerto UDP 30002 y apuntar la extensión PHP de Pinba a ese puerto. En menos de un minuto, tu aplicación estará enviando métricas y podrás consultarlas con SQL. Es una forma increíblemente sencilla de obtener visibilidad en tiempo real sobre el rendimiento de tu código, sin añadir complejidad operativa.

El caso de Pinba nos recuerda que, a veces, la mejor base de datos es la que olvida. Y que, con la combinación adecuada de ingeniería, inteligencia artificial y visión estratégica, podemos rescatar herramientas que parecían perdidas para siempre. En Q2BSTUDIO creemos en ese enfoque: soluciones que funcionan hoy, mañana y dentro de diez años.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.