Visão geral
Um banco de dados imutável é um sistema de gerenciamento de banco de dados (SGBD) projetado sob o princípio de que, uma vez que um dado é registrado, ele nunca é alterado ou excluído. Diferente dos bancos de dados relacionais tradicionais (SQL), que frequentemente sobrescrevem informações ao realizar operações de atualização (UPDATE) ou exclusão (DELETE), os bancos imutáveis tratam cada nova entrada como um fato histórico permanente. Essa arquitetura permite a preservação integral do estado do sistema ao longo do tempo, facilitando auditorias, depuração e a análise de tendências históricas sem a necessidade de logs externos complexos.
Funcionamento e características
O núcleo de um banco de dados imutável baseia-se na acumulação contínua de fatos. Quando uma informação precisa ser "alterada", o sistema não modifica o registro original; em vez disso, ele insere um novo registro que reflete o estado atual, mantendo o anterior intacto.
- Histórico completo: Como o banco não descarta dados antigos, é possível realizar consultas em qualquer ponto do tempo (time-travel queries).
- Auditoria nativa: A imutabilidade torna o sistema naturalmente resistente a adulterações, sendo ideal para setores que exigem alta conformidade, como o financeiro.
- Estruturas de dados: Muitos desses sistemas utilizam conceitos como Árvores de Merkle ou estruturas de hash para garantir a integridade e a prova de que os dados não foram alterados.
O caso do Datomic
O Datomic é um dos exemplos mais proeminentes de banco de dados imutável, amplamente conhecido por sua adoção pelo Nubank. Desenvolvido por Rich Hickey (criador da linguagem Clojure), o Datomic utiliza uma abordagem baseada em "datoms" — fatos imutáveis que representam a menor unidade de informação.
No ecossistema do Nubank, o Datomic permitiu que a empresa operasse com uma arquitetura onde o banco de dados funciona como uma fonte única de verdade histórica. Isso eliminou a necessidade de pipelines de dados complexos para extrair logs de auditoria, uma vez que o histórico já faz parte da estrutura nativa do banco. Em 2023, o Nubank anunciou a disponibilização gratuita de todas as edições do Datomic sob a licença Apache 2.0, visando democratizar o acesso a essa tecnologia.
Exemplos e ecossistema
Além do Datomic, o mercado de bancos de dados imutáveis inclui diversas soluções que atendem a diferentes necessidades, desde sistemas de chave-valor até suporte a SQL:
- Immudb: Focado em ser à prova de adulteração (tamper-proof), utiliza hashes para garantir a consistência.
- Outros exemplos: TerminusDB, Dolthub, Fluree, Endatabas, PumpkinDB e SurrealDB.
Vantagens e desafios
Vantagens
- Simplicidade na depuração: É possível verificar exatamente como um dado estava em um momento específico do passado.
- Confiabilidade: Redução drástica de erros causados por sobrescrita acidental de dados.
- Análise de dados: Facilita o trabalho de cientistas e engenheiros de análise, que possuem acesso a todo o histórico de eventos da organização.
Desafios
- Armazenamento: O crescimento contínuo do volume de dados exige estratégias eficientes de armazenamento, dado que nada é apagado.
- Curva de aprendizado: A mudança de paradigma do SQL tradicional para modelos imutáveis e baseados em lógica (como o Datalog no Datomic) pode exigir adaptação das equipes de engenharia.
