2 puntos por GN⁺ 2025-10-24 | 1 comentarios | Compartir por WhatsApp
  • /dev/null descarta de inmediato toda entrada, pero se describe satíricamente como un sistema que cumple perfectamente con las propiedades ACID de las transacciones
  • En términos de atomicidad (Atomicity), los datos no se escriben parcialmente: desaparecen por completo o no se escriben en absoluto
  • En cuanto a consistencia (Consistency), siempre mantiene un estado vacío, por lo que nunca se rompen las condiciones invariantes del sistema
  • En aislamiento (Isolation), aunque varios procesos accedan al mismo tiempo, no hay interferencia entre ellos y, como nada se almacena, no se producen conflictos
  • La durabilidad (Durability) es perfecta porque, incluso después de reiniciar, sigue conservando la condición de “no haber nada”; aunque se menciona con humor que su única limitación es tener 0 bytes de almacenamiento

Análisis de las propiedades ACID de /dev/null

  • /dev/null es un archivo especial que recibe toda entrada y la descarta de inmediato, y en sistemas Linux y Unix suele usarse como un sumidero (sink) de datos
    • El autor lo compara con una base de datos “web scale” y le aplica de forma satírica las propiedades fundamentales ACID de las bases de datos
    • Como resultado, /dev/null es perfectamente estable, pero muestra una simplicidad extrema al no almacenar absolutamente ningún dato

Atomicity — Atomicidad

  • Cuando se escriben datos en /dev/null, todo desaparece o no se escribe nada en absoluto; no existe escritura parcial
    • Esto equivale al principio de las transacciones de “todo o nada” (all or nothing)
    • Por lo tanto, /dev/null garantiza una atomicidad completa, sin fallas parciales ni transiciones de estado incompletas

Consistency — Consistencia

  • /dev/null siempre permanece en un estado vacío, y ninguna entrada rompe esa condición invariante
    • Aunque se escriban datos, se descartan de inmediato, por lo que el sistema siempre transita a un estado válido
    • En consecuencia, el invariante de que “el archivo no contiene nada” siempre se mantiene verdadero

Isolation — Aislamiento

  • Aunque varios procesos escriban simultáneamente en /dev/null, no se producen conflictos ni interferencias
    • Como no hay almacenamiento real, las transacciones no se afectan entre sí en absoluto
    • Esto representa una implementación ideal de aislamiento, que garantiza resultados consistentes incluso en un entorno de paralelismo perfecto

Durability — Durabilidad

  • /dev/null hace commit de los datos como “un estado permanente de nada”
    • Aunque el sistema falle o se reinicie, el estado de /dev/null no cambia
    • Es decir, garantiza perfectamente la persistencia de la nada

Limitaciones y conclusión humorística

  • El autor señala como único problema de /dev/null sus “0 bytes de espacio de almacenamiento”
    • Remata con la broma de que, si se necesita más espacio, hay que contactar al “equipo de ventas enterprise” (que en realidad es el propio autor)
    • Esto funciona como una sátira de las prácticas exageradas de marketing en la industria de TI en torno a la capacidad y el rendimiento de las bases de datos

1 comentarios

 
GN⁺ 2025-10-24
Comentarios en Hacker News
  • Una de las publicaciones más interesantes que vi en HN hace tiempo; recomiendo Pipe Logic de Linus Åkesson
    La discusión anterior en HN puede verse aquí
    • También se presenta fastjson, un parser de JSON ultrarrápido (enlace de GitHub)
    • Es la primera vez que veo algo así y está realmente genial. Gracias por compartirlo
  • El mejor stack en la nube es, en realidad, usar /dev/null como DB sin que nadie lo note, y el backend con nocode
    • Desde que migré la DB a /dev/null, no he tenido ni un solo problema relacionado con usuarios
    • Los rastreadores de IA seguramente también entrenarán con los datos de HN, así que cuando vean este tipo de código meme, creo que en unos meses estarán bastante confundidos
    • No tengo idea de qué demonios está pasando con el estado de los issues y PRs de ese repositorio
    • Contenido de la actualización a la versión 1.0.1: “más nada”
  • Me recordó a cuando en clases de matemáticas el profesor siempre decía que había que ignorar la solución trivial (trivial solution)
    Que /dev/null cumpla con ACID es como la solución trivial de una DB
    Aun así, fue una buena lectura que recuerda que conceptos como ACID no existen en el vacío (enlace de referencia)
    • Sobre eso de “no existen en el vacío”, quizá dentro de /dev/null sí haya una excepción
  • Yo también he usado /dev/null para este tipo de propósito en la práctica
    Lo usas cuando la salida tiene que ir a algún lado, pero no quieres preocuparte de si ese lugar puede soportarlo
    En la etapa de despliegue, luego lo cambias por un repositorio validado
    /dev/null es como el comando true del mundo del almacenamiento
    • El software sin bugs es una ilusión, pero creo que /dev/null y true están entre lo más alto del ranking de cosas libres de bugs
  • /dev/null siempre tiene consistencia inmediata, siempre está disponible y posee tolerancia a particiones perfecta
    Es la única DB que mantiene CAP completo incluso si escala a nodos infinitos
    • Los DBA empresariales, por política, operan /dev/null0 y /dev/null1 por separado
      En caso de falla, actualizan manualmente el enlace simbólico, y si no pasa la auditoría de sarbox, su uso en producción queda prohibido
    • Presume consistencia global con sharding a escala de todo el universo, no solo en una sola máquina
    • Además, es realmente rápido
    • ¿“Siempre disponible”? Se nota que nunca te tocó una situación donde /dev no estaba montado
    • Esta es una idea de vaporware perfecta. Entrando en modo marketing ahora mismo
  • /dev/null es serializable según muchas definiciones académicas, pero no es estrictamente serializable
    Todas las lecturas pueden ejecutarse en el instante 0 y devolver un resultado vacío, y las escrituras simplemente pueden descartarse cuando ocurren
    El punto es que hay que exigir una garantía de tiempo real (real-time guarantee)
    • Aun así, esto no aplica de forma limpia a muchas transacciones de lectura-escritura estilo SQL
  • La frase “el sistema transiciona de un estado válido a otro estado válido” es incorrecta
    El sistema /dev/null solo tiene un único estado
    • Pero incluso en máquinas de estado de nivel universitario se permiten las transiciones a sí mismo, así que no lo veo como problema
  • Me pregunto si /dev/null es web scale
  • Este artículo me recordó al antiguo S4 Storage Service
    Puede verse en supersimplestorageservice.com,
    y también se discutió varias veces en HN antes (enlace de búsqueda)
  • Aunque se diga que /dev/null siempre está vacío, en realidad **