Sobre el proyecto

immudb es una base de datos ligera y de código abierto construida en torno a la inmutabilidad y los principios de confianza cero. Los registros pueden agregarse como nuevas versiones, pero nunca alterarse ni eliminarse, y cada cambio se rastrea en un historial criptográficamente coherente y verificable que los clientes pueden validar sin confiar en el servidor de la base de datos. Puede operar como base de datos relacional (SQL), almacén clave-valor y base de datos de modelo de documentos, y puede ejecutarse como servicio independiente o integrarse en proceso como biblioteca Go. Capacidades clave documentadas en el proyecto: - Acceso multimodelo: SQL con transacciones y blobs, una API clave-valor con lecturas/escrituras verificadas y un modelo de documentos. - Compatibilidad con el protocolo de cable de PostgreSQL: los clientes y ORMs estándar de PostgreSQL (psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx) pueden conectarse directamente. Las características SQL admitidas incluyen cláusulas RETURNING, expresiones de tabla comunes (WITH / WITH RECURSIVE), funciones de ventana (ROW_NUMBER, RANK, LAG, LEAD y otras), vistas, secuencias, un amplio conjunto de uniones y subconsultas, operaciones de conjuntos, control de transacciones basado en SAVEPOINT, importación masiva COPY FROM stdin, índices parciales y más de 75 funciones integradas. La emulación de catálogo mediante tablas pg_catalog e information_schema admite la introspección de ORMs. Las limitaciones documentadas incluyen ausencia de procedimientos almacenados/PLpgSQL, sin índices GIN/GiST (solo B-tree) y sin columnas generadas. - Consultas de viaje en el tiempo: una sintaxis SQL DIFF OF compara el estado de las tablas entre dos rangos de transacciones, etiquetando filas como INSERT, UPDATE o DELETE. - Verificación criptográfica mediante SQL: funciones como immudb_state(), immudb_verify_row(), immudb_verify_tx() e immudb_history() exponen el sistema de prueba directamente en consultas. - Registro de auditoría estructurado: eventos de auditoría JSON inmutables opcionales para cada operación gRPC (marca de tiempo, usuario, IP, base de datos, método, categoría, duración, ID de sesión), almacenados en el almacén clave-valor a prueba de manipulaciones de immudb y exportables a sistemas SIEM. - Opciones de implementación: binarios precompilados, imágenes Docker, gráficos Helm de Kubernetes y modo de biblioteca integrada. Los datos pueden almacenarse en Amazon S3 o alternativas compatibles con S3 como MinIO, con soporte para roles IAM de AWS y obtención de credenciales de Fargate. - Ecosistema de clientes: SDKs oficiales para Java, Go (incluido un adaptador GORM), .NET, Python y Node.js; la CLI immuclient para administración interactiva; e immugw, una puerta de enlace REST para lenguajes sin SDK. Los usuarios de Rust se dirigen a clientes PostgreSQL estándar o código gRPC generado, ya que el crate immudb en crates.io no es oficial. - Endurecimiento de seguridad: validación de recorrido de rutas en restauración de archivos, invalidación inmediata de sesiones ante cambios de usuarios/permisos, permisos restringidos de archivos de tokens y una advertencia de inicio cuando el servidor compatible con PostgreSQL se ejecuta sin TLS. Los usos reales reportados incluyen almacenar inmutablemente cambios de campos sensibles (por ejemplo, datos de pago), proteger recetas de integración/despliegue continuo (CI/CD), almacenar certificados y sumas de verificación, flujos de registros con evidencia de manipulación y registrar datos de sensores o ubicación. La documentación, una demostración de consola web y un área de juegos del SDK de Python están disponibles en el sitio del proyecto.