/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
Comentários do Hacker News
A discussão antiga no HN pode ser vista aqui
fastjson(link do GitHub)/dev/nullcomo DB sem ninguém perceber, e o backend em nocode/dev/null, nunca mais tive nenhum problema relacionado a usuáriosDizer que
/dev/nullsatisfaz ACID é como a solução trivial de um banco de dadosAinda assim, foi uma boa leitura para lembrar que conceitos como ACID não existem no vácuo (link de referência)
/dev/nullseja uma exceção/dev/nullde fato para esse tipo de propósitoQuando 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 comandotruedo mundo dos repositórios/dev/nulletrueestão entre os líderes absolutos em ausência de bugs/dev/nulltem 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
/dev/null0e/dev/null1separadamente por políticaEm caso de falha, atualizam manualmente o link simbólico, e se não passar na auditoria sarbox, o uso em produção é proibido
/devnão estava montado/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)
O sistema
/dev/nulltem apenas um único estado/dev/nullé realmente web scale/dev/nullpode até rodar um site como zombo.comDá para ver em supersimplestorageservice.com,
e ele já foi discutido várias vezes no HN no passado (link de busca)
/dev/nullestá sempre vazio, mas na prática ele é **