Definição
Write-ahead log na persistência fiscal é a técnica de registrar, em um arquivo de diário durável, cada operação sobre um documento fiscal antes de executá-la ou gravá-la definitivamente. Assim, se o sistema cair no meio da emissão de uma NF-e ou NFS-e, é possível recuperar o estado correto, evitando perda de dados, duplicidade e inconsistências.
Também conhecido como: WAL, Write-ahead log, Write-ahead logging, Log de escrita antecipada, Registro antecipado de escrita, Journaling
O que é write-ahead log, em termos simples?
Write-ahead log, ou WAL, significa algo como registro antecipado de escrita. A ideia é anotar a intenção antes de agir: primeiro o sistema escreve em um diário seguro o que pretende fazer e só depois altera os dados principais.
Uma comparação útil é a de um caixa de loja que anota cada venda num caderno antes de mexer no estoque. Se faltar luz no meio do processo, basta consultar o caderno para saber o que já foi feito e o que ficou pendente.
Na persistência fiscal, ou seja, na forma como um sistema guarda informações sobre notas, eventos e protocolos, essa técnica ajuda a garantir que nada se perca entre o pedido de emissão e a resposta do fisco.
Por que o write-ahead log é importante na emissão fiscal?
Emitir um documento fiscal envolve várias etapas: montar o XML, assinar, enviar à SEFAZ ou à prefeitura, receber o protocolo e guardar o resultado. Uma falha no meio desse caminho pode deixar o sistema sem saber se a nota foi autorizada ou não.
Sem um registro confiável, o sistema pode reenviar a mesma nota e gerar duplicidade, pular uma numeração ou perder o XML autorizado, que precisa ser guardado. Com o WAL, o sistema sabe exatamente em que ponto parou e pode retomar dali com segurança.
Como funciona o write-ahead log na prática?
Antes de cada mudança importante, o sistema grava uma entrada no log, por exemplo: nota 1520 reservada, XML assinado, lote enviado, protocolo recebido. Essa gravação é feita de forma durável, isto é, confirmada em disco, e não apenas na memória.
Só depois dessa confirmação os dados principais são atualizados. Se houver uma queda, o processo de recuperação lê o log, refaz as etapas confirmadas que não chegaram aos dados principais e identifica as que ficaram incompletas, como um envio sem resposta, para consultar o status no fisco antes de agir.
Muitos bancos de dados já usam WAL internamente. Em integrações fiscais, a mesma lógica costuma aparecer também na aplicação, em tabelas de eventos ou filas que registram cada passo da emissão.
Qual a diferença entre write-ahead log, backup e log de auditoria?
O backup é uma cópia dos dados feita periodicamente para recuperar informações em caso de perda grave. O WAL atua continuamente, operação por operação, para manter os dados consistentes mesmo após uma falha repentina.
O log de auditoria, ou histórico de eventos fiscais, serve para mostrar quem fez o quê e quando, com foco em rastreabilidade. O WAL tem foco técnico: garantir que as operações sejam concluídas ou desfeitas corretamente. Os dois podem coexistir e até compartilhar informações, mas têm objetivos diferentes.
Como o write-ahead log se relaciona com idempotência e filas de emissão?
Idempotência é a capacidade de repetir uma requisição sem gerar um efeito duplicado. O WAL ajuda nisso porque registra que uma emissão já foi iniciada com determinada chave, permitindo que uma nova tentativa reconheça o trabalho já feito em vez de criar outra nota.
Em fluxos assíncronos, em que a nota entra numa fila e é processada depois, o log registra o estado de cada item. Assim, se o processador reiniciar, ele sabe quais documentos estão pendentes, quais aguardam retorno e quais já foram concluídos.
Quem precisa se preocupar com write-ahead log?
Equipes que desenvolvem ERPs, plataformas de venda ou marketplaces com emissão própria precisam pensar em como garantir a consistência dos dados em caso de falha. Quando a emissão é delegada a uma API fiscal, boa parte dessa responsabilidade fica com o emissor, mas o sistema do cliente ainda deve registrar seus pedidos de forma segura e usar chaves de idempotência para não perder nem duplicar solicitações.
Exemplos de Write-ahead log na persistência fiscal
- Um ERP grava no log que a NF-e de número 3050 foi enviada; o servidor reinicia antes de receber o protocolo e, ao voltar, o sistema consulta o status na SEFAZ em vez de reenviar a nota.
- Uma plataforma de serviços registra cada DPS da NFS-e no write-ahead log antes de chamar a API fiscal, conseguindo reprocessar apenas os pedidos que ficaram sem resposta após uma queda de rede.
- Um marketplace usa uma tabela de eventos no estilo WAL para acompanhar cada NFC-e do pedido até a autorização e o armazenamento do XML, evitando notas órfãs no banco.
- Uma transportadora registra no log a emissão de cada CT-e vinculado a um MDF-e, garantindo que o manifesto só seja encerrado quando todos os documentos estiverem confirmados.
Perguntas frequentes
O write-ahead log substitui o backup?
Não. O WAL garante consistência após falhas repentinas, operação por operação. O backup protege contra perdas maiores, como corrupção de disco ou exclusão acidental. Os dois são complementares.
O write-ahead log evita notas duplicadas?
Ajuda bastante. Ao registrar que uma emissão já começou, o sistema consegue verificar o status antes de reenviar. Para proteção completa, deve ser combinado com chaves de idempotência e consulta ao fisco.
Preciso implementar WAL se uso um banco de dados moderno?
Muitos bancos já usam WAL internamente para suas próprias transações. Porém, etapas externas, como o envio à SEFAZ, não são cobertas por ele, por isso a aplicação também deve registrar o estado de cada emissão.
Atualizado em · Como produzimos este glossário
