2 pontos por GN⁺ 2025-10-24 | 1 comentários | Compartilhar no WhatsApp
  • /dev/null descarta imediatamente toda entrada, mas é descrito de forma satírica como um sistema que satisfaz perfeitamente as propriedades ACID de transações
  • Do ponto de vista da atomicidade (Atomicity), os dados não são gravados parcialmente: ou desaparecem por completo, ou não são gravados de jeito nenhum
  • Em termos de consistência (Consistency), ele permanece sempre vazio, de modo que as condições invariáveis do sistema nunca são violadas
  • Na isolação (Isolation), mesmo que vários processos o acessem ao mesmo tempo, não há interferência entre eles e, como nada é armazenado, não surgem conflitos
  • A durabilidade (Durability) também é perfeita, já que mesmo após reinicializações ele continua contendo “nada”; a única limitação, mencionada com humor, é sua capacidade de armazenamento de 0 bytes

Análise das propriedades ACID do /dev/null

  • /dev/null é um arquivo especial que recebe toda entrada e a descarta imediatamente, funcionando como um data sink comumente usado em sistemas Linux e da família Unix
    • O autor o compara satiricamente a um banco de dados “Web Scale”, aplicando de forma irônica as propriedades centrais de um banco de dados, o ACID
    • Como resultado, /dev/null se mostra perfeitamente estável, mas também revela uma simplicidade extrema por não armazenar dado algum

Atomicity — Atomicidade

  • Ao escrever dados em /dev/null, tudo desaparece ou nada é gravado, sem existência de gravação parcial
    • Isso equivale exatamente ao princípio “tudo ou nada (all or nothing)” de uma transação
    • Portanto, /dev/null garante uma atomicidade completa, sem falhas parciais nem transições incompletas de estado

Consistency — Consistência

  • /dev/null mantém sempre um estado vazio, e nenhuma entrada quebra essa condição invariável
    • Mesmo quando dados são escritos, eles são descartados de imediato, fazendo o sistema sempre transitar para um estado válido
    • Como resultado, o invariante (invariant) “não há nada no arquivo” permanece sempre verdadeiro

Isolation — Isolação

  • Mesmo que vários processos escrevam dados em /dev/null simultaneamente, não ocorrem conflitos nem interferência
    • Como nada é efetivamente armazenado, não existe qualquer impacto entre transações
    • Isso representa uma implementação ideal de isolação, garantindo resultados consistentes até em um ambiente perfeitamente paralelo

Durability — Durabilidade

  • /dev/null faz commit dos dados como “permanentemente em estado de nada”
    • Mesmo que o sistema falhe ou seja reiniciado, o estado de /dev/null não muda
    • Ou seja, ele garante perfeitamente a durabilidade do ‘nada’

Limitações e conclusão bem-humorada

  • O autor aponta como único problema do /dev/null o “espaço de armazenamento de 0 bytes”
    • Se for preciso mais espaço, a piada final é pedir ajuda ao “time de vendas enterprise” (que, na prática, é o próprio autor)
    • Trata-se de uma sátira às práticas de marketing exageradas da indústria de TI em torno de capacidade e desempenho de bancos de dados

1 comentários

 
GN⁺ 2025-10-24
Comentários do Hacker News
  • Uma das coisas mais interessantes que já vi no HN foi Pipe Logic, de Linus Åkesson (link)
    A discussão antiga no HN pode ser vista aqui
    • Também apresenta o parser JSON ultrarrápido chamado fastjson (link do GitHub)
    • Nunca tinha visto algo assim antes, é realmente incrível. Obrigado por compartilhar
  • A melhor stack de cloud é, na verdade, usar /dev/null como DB sem ninguém perceber, e o backend em nocode
    • Desde que migrei o DB para /dev/null, nunca mais tive nenhum problema relacionado a usuários
    • Os crawlers de IA também vão treinar com dados do HN, então acho que esse tipo de código meme vai deixá-los bem confusos daqui a alguns meses
    • Não faço ideia do que está acontecendo com o estado das issues e PRs desse repositório
    • Conteúdo da atualização da versão 1.0.1: “mais nada”
  • Isso me lembrou das aulas de matemática em que o professor sempre dizia para ignorar a solução trivial (trivial solution)
    Dizer que /dev/null satisfaz ACID é como a solução trivial de um banco de dados
    Ainda assim, foi uma boa leitura para lembrar que conceitos como ACID não existem no vácuo (link de referência)
    • Sobre essa ideia de “não existir no vácuo”, talvez dentro de /dev/null seja uma exceção
  • Eu também já usei /dev/null de fato para esse tipo de propósito
    Quando a saída precisa ir para algum lugar, mas você não quer se preocupar se esse lugar consegue lidar com ela
    Na etapa de deploy, basta trocar por um repositório validado
    /dev/null é como o comando true do mundo dos repositórios
    • Software sem bugs é uma ilusão, mas acho que /dev/null e true estão entre os líderes absolutos em ausência de bugs
  • /dev/null tem sempre consistência imediata, está sempre disponível e possui perfeita tolerância a partições
    É o único DB que mantém CAP completo mesmo escalando para infinitos nós
    • DBAs enterprise operam /dev/null0 e /dev/null1 separadamente por política
      Em caso de falha, atualizam manualmente o link simbólico, e se não passar na auditoria sarbox, o uso em produção é proibido
    • Ostenta consistência global com sharding por todo o universo, não apenas em uma única máquina
    • E também é muito rápido
    • “Sempre disponível”? Pelo visto você nunca passou por uma situação em que /dev não estava montado
    • Esta é uma ideia perfeita de vaporware. Estou entrando em modo marketing agora mesmo
  • /dev/null é serializável (serializable) em muitas definições acadêmicas, mas não é estritamente serializável (strict serializable)
    Dá para executar todas as leituras no instante 0 e retornar resultado vazio, enquanto as escritas simplesmente são descartadas no momento em que acontecem
    O ponto é que se deve exigir uma garantia de tempo real (real-time guarantee)
    • Só que essa abordagem não se aplica de forma elegante a muitas transações de leitura-escrita no estilo SQL
  • A frase “o sistema transita de um estado válido para outro estado válido” está errada
    O sistema /dev/null tem apenas um único estado
    • Mas mesmo em máquinas de estados de nível introdutório, transições para si mesmo são permitidas, então não vejo isso como problema
  • Fico me perguntando se /dev/null é realmente web scale
  • Este post me fez lembrar do antigo S4 Storage Service
    Dá para ver em supersimplestorageservice.com,
    e ele já foi discutido várias vezes no HN no passado (link de busca)
  • Dizem que /dev/null está sempre vazio, mas na prática ele é **