À propos du projet

immudb est une base de données légère et open-source construite autour de l'immuabilité et des principes de confiance zéro. Les enregistrements peuvent être ajoutés sous forme de nouvelles versions mais jamais modifiés ni supprimés, et chaque modification est tracée dans un historique cryptographiquement cohérent et vérifiable que les clients peuvent valider sans avoir à faire confiance au serveur de base de données lui-même. Elle peut fonctionner comme une base de données relationnelle (SQL), un magasin clé-valeur et une base de données à modèle document, et peut s'exécuter en tant que service autonome ou être intégrée en processus en tant que bibliothèque Go. Fonctionnalités clés documentées dans le projet : - Accès multi-modèle : SQL avec transactions et blobs, une API clé-valeur avec lectures/écritures vérifiées, et un modèle document. - Compatibilité avec le protocole fil PostgreSQL : les clients et ORM PostgreSQL standard (psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx) peuvent se connecter directement. Les fonctionnalités SQL prises en charge incluent les clauses RETURNING, les expressions de table commune (WITH / WITH RECURSIVE), les fonctions de fenêtre (ROW_NUMBER, RANK, LAG, LEAD et autres), les vues, les séquences, un large éventail de jointures et de sous-requêtes, les opérations d'ensemble, le contrôle de transaction basé sur SAVEPOINT, l'importation en masse COPY FROM stdin, les index partiels et plus de 75 fonctions intégrées. L'émulation du catalogue via les tables pg_catalog et information_schema prend en charge l'introspection des ORM. Les limitations documentées incluent l'absence de procédures stockées/PLpgSQL, l'absence d'index GIN/GiST (uniquement B-tree) et l'absence de colonnes générées. - Requêtes de voyage dans le temps : une syntaxe DIFF OF SQL compare l'état d'une table entre deux plages de transactions, en étiquetant les lignes comme INSERT, UPDATE ou DELETE. - Vérification cryptographique via SQL : des fonctions telles que immudb_state(), immudb_verify_row(), immudb_verify_tx() et immudb_history() exposent le système de preuve directement dans les requêtes. - Journalisation d'audit structurée : événements d'audit JSON immuables facultatifs pour chaque opération gRPC (horodatage, utilisateur, IP, base de données, méthode, catégorie, durée, identifiant de session), stockés dans le magasin KV infalsifiable d'immudb et exportables vers des systèmes SIEM. - Options de déploiement : binaires précompilés, images Docker, graphiques Helm Kubernetes et mode bibliothèque intégrée. Les données peuvent être stockées sur Amazon S3 ou des alternatives compatibles S3 telles que MinIO, avec prise en charge des rôles IAM AWS et de la récupération des identifiants Fargate. - Écosystème de clients : SDK officiels pour Java, Go (y compris un adaptateur GORM), .NET, Python et Node.js ; l'outil en ligne de commande immuclient pour l'administration interactive ; et immugw, une passerelle REST pour les langages sans SDK. Les utilisateurs Rust sont orientés vers les clients PostgreSQL standard ou le code gRPC généré, car le crate immudb sur crates.io n'est pas officiel. - Renforcement de la sécurité : validation de la traversée de chemin lors de la restauration d'archives, invalidation immédiate des sessions lors des modifications d'utilisateurs/permissions, permissions de fichiers de jeton restreintes et un avertissement au démarrage lorsque le serveur compatible PostgreSQL fonctionne sans TLS. Les usages réels rapportés incluent le stockage immuable de modifications de champs sensibles (par exemple, données de paiement), la protection des recettes de construction CI/CD, le stockage de certificats et de sommes de contrôle, les flux de journaux infalsifiables et l'enregistrement de données de capteurs ou de localisation. La documentation, une démonstration de console web et un espace de jeu SDK Python sont disponibles sur le site du projet.