Foi lançado um lançamento significativo do SGBD immudb 1.0, que garante a imutabilidade e a preservação de todos os dados adicionados, além de fornecer proteção contra alterações retroativas e possibilitar a prova criptográfica de propriedade dos dados. Inicialmente, o projeto foi desenvolvido como um repositório NoSQL especializado, manipulando dados no formato chave/valor, mas a partir do lançamento 1.0, o immudb é posicionado como um SGBD completo com suporte a SQL. O código do projeto é escrito na linguagem Go e é distribuído sob a licença Apache 2.0.
As informações no immudb são armazenadas com uma estrutura semelhante ao blockchain, garantindo a integridade de toda a cadeia de registros existentes e impedindo a alteração de dados já salvos ou a inserção/substituição de registros no histórico de transações. O repositório suporta apenas a adição de novos dados, sem possibilidade de exclusão ou modificação das informações já adicionadas. Tentar alterar registros no SGBD apenas resulta na preservação de uma nova versão do registro; os dados antigos não são perdidos e permanecem acessíveis no histórico de alterações.
Diferente das soluções típicas baseadas em blockchain, o immudb permite obter desempenho na faixa de milhões de transações por segundo e pode ser utilizado para iniciar serviços leves ou para incorporar sua funcionalidade em aplicativos na forma de biblioteca.

Alto desempenho é alcançado graças à utilização da árvore LSM (Log-structured merge-tree) com log de valores, garantindo acesso rápido aos registros em alta intensidade de adição de dados. Para manter a integridade do repositório, uma estrutura de árvore denominada "Árvore de Merkle" (Merkle Tree) é adicionalmente utilizada, onde cada ramo verifica todos os ramos e nós inferiores por meio de hash compartilhado (em árvore). Com um hash final, o usuário pode assegurar a correção de toda a história de operações, bem como a correção dos estados anteriores do banco de dados (o hash raiz de verificação do novo estado do banco é calculado considerando o estado anterior).
Os clientes e auditores recebem prova criptográfica de propriedade e integridade dos dados. A aplicação de criptografia assimétrica não exige que o cliente confie em servidor, e a conexão de cada novo cliente ao SGBD aumenta o nível geral de confiança em todo o armazenamento. Chaves públicas e listas de revogação de chaves são armazenadas no banco de dados, e durante operações de criptografia, enclaves Intel SGX podem ser utilizados.
Entre as funcionalidades do SGBD, estão a suporte a SQL, modo de armazenamento chave/valor, índices, sharding do banco de dados, criação de snapshots do estado dos dados, transações ACID com suporte a isolações de snapshots (SSI), alta performance de leitura e gravação, otimizações para operação eficiente em SSDs, e suporte de operação em forma servidor e biblioteca embutida, suporte a REST API e uma interface web para gerenciamento. As áreas de aplicação típicas onde bancos de dados como o immudb são requisitados incluem transações com cartões de crédito, armazenamento de chaves públicas, certificados digitais, somas de verificação e logs, além da criação de um armazenamento duplicado para campos importantes em SGBDs tradicionais. Bibliotecas cliente para trabalhar com immudb foram preparadas para Go, Java, .NET, Python e Node.js.
Melhorias chave no lançamento do immudb 1.0:
- Suporte a SQL com possibilidade de proteção de linhas contra modificações ocultas.
- Modo TimeTravel, que permite alternar o estado do banco de dados para um determinado momento no passado. Além disso, o tempo de corte dos dados pode ser definido no nível de subconsultas individuais, o que facilita a análise de alterações e a comparação de dados.
- Suporte ao protocolo cliente PostgreSQL, permitindo o uso do immudb com aplicativos e bibliotecas existentes projetados para trabalhar com PostgreSQL. Além das bibliotecas cliente nativas, é possível usar bibliotecas cliente típicas em Ruby, C, JDBC, PHP e Perl.
- Console Web para navegação interativa pelos dados e administração do SGBD. Através da interface web, é possível enviar consultas, criar usuários e gerenciar dados. Uma área de aprendizado adicional chamada Playground também está disponível.


Fonte: opennet.ru


