Sobre o projeto
immudb é um banco de dados leve e de código aberto construído em torno dos princípios de imutabilidade e confiança zero. Registros podem ser adicionados como novas versões, mas nunca alterados ou excluídos, e cada mudança é rastreada em um histórico criptograficamente coerente e verificável que os clientes podem validar sem confiar no próprio servidor do banco. Ele pode operar como um banco de dados relacional (SQL), um armazenamento chave-valor e um banco de dados de modelo de documentos, e pode ser executado como um serviço autônomo ou incorporado no processo como uma biblioteca Go.
Principais capacidades documentadas no projeto:
- Acesso multimodelo: SQL com transações e blobs, uma API chave-valor com leituras/gravações verificadas e um modelo de documentos.
- Compatibilidade com o protocolo de fio do PostgreSQL: clientes e ORMs padrão do PostgreSQL (psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx) podem conectar diretamente. Os recursos SQL suportados incluem cláusulas RETURNING, expressões de tabela comuns (WITH / WITH RECURSIVE), funções de janela (ROW_NUMBER, RANK, LAG, LEAD e outras), visões, sequências, um amplo conjunto de junções e subconsultas, operações de conjunto, controle de transação baseado em SAVEPOINT, importação em massa COPY FROM stdin, índices parciais e mais de 75 funções integradas. A emulação de catálogo via tabelas pg_catalog e information_schema suporta introspecção de ORM. As limitações documentadas incluem ausência de procedimentos armazenados/PLpgSQL, sem índices GIN/GiST (apenas B-tree) e sem colunas geradas.
- Consultas de viagem no tempo: uma sintaxe SQL DIFF OF compara o estado da tabela entre dois intervalos de transação, rotulando linhas como INSERT, UPDATE ou DELETE.
- Verificação criptográfica via SQL: funções como immudb_state(), immudb_verify_row(), immudb_verify_tx() e immudb_history() expõem o sistema de prova diretamente nas consultas.
- Logs de auditoria estruturados: eventos JSON imutáveis e opcionais para cada operação gRPC (timestamp, usuário, IP, banco de dados, método, categoria, duração, ID de sessão), armazenados no armazenamento chave-valor à prova de adulteração do immudb e exportáveis para sistemas SIEM.
- Opções de implantação: binários pré-compilados, imagens Docker, gráficos Helm do Kubernetes e modo de biblioteca incorporada. Os dados podem ser armazenados no Amazon S3 ou em alternativas compatíveis com S3, como MinIO, com suporte a papéis IAM da AWS e obtenção de credenciais via Fargate.
- Ecossistema de clientes: SDKs oficiais para Java, Go (incluindo um adaptador GORM), .NET, Python e Node.js; o CLI immuclient para administração interativa; e immugw, um gateway REST para linguagens sem SDK. Usuários de Rust são direcionados para clientes PostgreSQL padrão ou código gRPC gerado, pois a crate immudb no crates.io não é oficial.
- Endurecimento de segurança: validação de travessia de caminho na restauração de arquivos, invalidação imediata de sessão em mudanças de usuário/permissão, permissões restritas de arquivos de token e um aviso de inicialização quando o servidor compatível com PostgreSQL é executado sem TLS.
Usos reais relatados incluem armazenar imutavelmente mudanças de campos sensíveis (ex.: dados de pagamento), proteger receitas de CI/CD, armazenar certificados e somas de verificação, fluxos de log à prova de adulteração e registrar dados de sensores ou localização. Documentação, demonstração do console web e um playground do SDK Python estão disponíveis no site do projeto.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.