Bancos de dados imutáveis

Foi assistindo o vídeo da palestra sobre infraestrutura imutável do time de infra do Nubank que ouvi falar do Datomic. Achei interessante a forma como os dados são tratados, existindo, resumidamente, apenas operações de criação. Para quem utiliza sistemas de controle de versão, é fácil recuperar e auditar os dados. Para uma instituição financeira, que deve manter seus livros caixas consistentes, isso é de fundamental importância. Falando em livro caixa, você já deve saber que blockchain está causando uma revolução no mundo. Já parou para pensar no quanto que, nós da área de TI, somos responsáveis pelas falhas de segurança que causam prejuízos para instituições e usuários?

Quem nunca viu notícias de fraudes em sistemas de informação do tipo: registros “sumindo” de banco de dados; desastres em servidores sem políticas sérias de backups; profissionais de TI com acesso irrestrito aos servidores ou gerentes administrativos removendo informações para eliminar provas em troca de propina. É claro que existem sistemas sofisticados de log e auditoria, mas se pudéssemos proteger os sistemas de armazenamento de nós mesmos? Dando aquele velho argumento: me desculpe mas o sistema não permite que eu possa apagar tal informação. Já estamos acostumados a ouvir isso de operadores e atendentes. Precisamos ouvir mais desse tipo de argumento de DBAs e Sysadmins.

O Datomic é um banco de dados distribuído, escrito em Clojure, projetado para permitir aplicativos escaláveis, flexíveis e inteligentes, em execução em novas arquiteturas de nuvem. Ele usa o Datalog como a linguagem de consulta. O interessante da arquitetura do Datomic é que a persistência de dados, chamada de Storage Services, pode ser configurada para outros sistemas de banco de dados, como: PostgreSQL, MySQL ou Oracle. Você pode obter a versão para instalar em seu datacenter ou usá-lo na Amazon Web Services.

Uma visão geral de seus componentes é representada pela imagem abaixo, obtida da documentação:

Os componentes do Datomic

Procurando alternativas open source ao Datomic, encontrei o projeto BigchainDB, desenvolvido em Python, entitulado “The blockchain database“. Leia os conceitos principais da tecnologia e, para se aprofundar, entenda as características envolvidas como: descentralização e imutabilidade. O manual de instalação informa que ele trabalha com MongoDB, um banco de dados NoSQL.

Benefícios do BigchainDB

Utilizei a instalação via docker e acabei conhecendo o RethinkDB, um projeto com suas idas e vindas mas que hoje está caminhando e integrado à Linux Foundation. Conheço o MongoDB há algum tempo e o RethinkDB me chamou atenção por não ter versão enterprise, sua arquitetura e sua interface web trazem informações suficientes para não precisar instalar ferramentas de terceiros para manutenção e análise das bases de dados. Se você configurou o BigchainDB, exercite ou aprenda mais Python com os exemplos fornecidos, fixando o aprendizado. Se você também se interessou pelo RethinkDB, instale-o em seu sistema operacional e siga seus guias para entender melhor do que estou falando. Suas funcionalidades para aplicações em tempo real são muito interessantes.

Interface web do RethinkDB

Existem outras alternativas de banco de dados como os consolidados CouchDB e HBase, assunto para próximos artigos. E, também muitas críticas sobre o modelo de bancos de dados imutáveis. Um dos pontos é de que eles consomem agressivamente espaço em disco, pois os dados não são mais removidos. Não há operações como vaccum, por exemplo. O profissional deve ponderar na hora de implementar imutabilidade de dados e verificar que sistemas de banco de dados tradicionais podem suprir essa necessidade. Um log de transação de um banco de dados armazena a imutabilidade dos dados enquanto que a base de dados o estado atual dos mesmos. Imutabilidade para muitos RDBMSs, não é novidade.

O assunto é denso e extenso. Apenas comecei a provocação de seus estudos. Além dos links espalhados pelo texto, elenco alguns artigos para aprofundar o assunto:

Devo preparar mais textos sobre o assunto. Até a próxima!

About Luiz Sanches

Software Developer at Nômade Tecnologia

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *