Un ejecutable es una base de datos SQLite
Convertir un ejecutable en un formato de base de datos SQLite despierta tanto admiración por su creatividad como escepticismo sobre su practicidad. Los comentaristas señalan que este enfoque podría unificar herramientas, hacer que los binarios sean consultables con SQL e incluso servir como contenedor para código, datos y plugins, pero subrayan graves trade-offs como la pérdida de compartición basada en `mmap`, un mayor uso de memoria y la complejidad de adaptar el layout de almacenamiento de SQLite. La conversación se amplía hacia una idea recurrente en el diseño de sistemas: reemplazar o respaldar sistemas de archivos, ejecutables e incluso servicios del SO con abstracciones apoyadas en bases de datos, al tiempo que se cuestiona hasta dónde debería llegar esta tendencia de “SQLite para todo”.
Reacciones generales
- Muchos lectores encontraron el proyecto divertido, ingenioso y un “gran proyecto de hacker”, especialmente por el uso de bibliotecas dinámicas e internals de ELF.
- Otros apreciaron la inventiva, pero no sintieron que resolviera un problema apremiante para usuarios típicos; lo vieron más claramente valioso para personas que ya manipulan binarios ELF.
- Varios lo compararon con ideas existentes: imágenes de Smalltalk/Lisp/Forth, contenedores al estilo zip/JAR, redbean, DBOS, AS/400/PICK y nociones de sistemas operativos de “todo es una base de datos”.
Formato ejecutable y trade-offs de rendimiento
- Preocupación principal: los segmentos de texto se copian fuera de los B-trees de SQLite en lugar de hacer
mmap.- Esto impide compartir páginas de texto entre procesos y perjudica la eficiencia de memoria y swap, especialmente en sistemas con muchas dependencias dinámicas.
- Algunos sugirieron:
- Alinear y rellenar los BLOBs para que se conviertan en regiones alineadas a página y aptas para
mmap. - Aumentar el tamaño de página de SQLite (por ejemplo, 64 KB) para obtener áreas grandes y contiguas.
- Escribir un VFS personalizado de SQLite para separar cabeceras de datos.
- Usar conversión SELF→ELF en tiempo de carga para que el binario en ejecución sea un ELF normal.
- Alinear y rellenar los BLOBs para que se conviertan en regiones alineadas a página y aptas para
- Varios señalaron que evitar copias y habilitar
mmapes “todo el punto” de los formatos ejecutables, así que este trade-off no es trivial.
SQLite como contenedor / sistema de archivos / interfaz
- Gran interés en SQLite como formato contenedor genérico y con buenas herramientas para ejecutables, documentos, imágenes y más; lo contrastaron con formatos binarios ad hoc y con ZIP+XML (OOXML/ODF).
- Algunos sostuvieron que el sistema de archivos ya es una “base de datos” componible, con directorios actuando como sub-bases de datos; el espacio de nombres plano de SQLite encaja peor con eso.
- A otros les gustó la idea de un sistema de archivos respaldado por una base de datos que siga presentando un árbol jerárquico a los usuarios, pero permita consultas tipo SQL sobre metadatos ricos.
Diseños alternativos y herramientas relacionadas
- Varios comentaristas sugirieron mantener ELF y exponerlo mediante tablas virtuales SQL en lugar de cambiar el formato en disco.
- Herramientas mencionadas: osquery, nushell, Steampipe, tablas virtuales de SQLite para montar sistemas de archivos y trabajos previos que usan SQLite como contenedor de apps embebidas.
Críticas, preguntas y ambigüedades
- Algunos vieron el proyecto como el uso de SQLite como un “martillo favorito” más que como un nuevo formato de objeto bien fundamentado.
- Un comentarista cuestionó la afirmación del artículo de que SQLite “interna” cadenas; reporta cadenas duplicadas en disco y dice que la internación debe hacerse explícitamente.
- Otros imaginaron mecanismos más ricos de plugins y relink dentro del ejecutable SQLite, pero eso sigue siendo especulativo.
Meta: títulos y cultura de investigación
- El filtro de título de HN que elimina “Your” provocó llamados a un de-clickbaiting más inteligente o asistido por LLM, o a reescribir “Your” → “My”.
- La nota del autor de que la retroalimentación académica fue dura llevó a debatir que el trabajo de sistemas de bajo nivel y “artístico” está infravalorado frente a métricas puras de rendimiento.