这个项目能做什么
immudb是一款围绕不可变性和零信任原则构建的轻量级开源数据库。记录只能作为新版本添加,无法被修改或删除,所有变更均记录在加密一致且可验证的历史中,客户端无需信任数据库服务器即可进行验证。它可作为关系型(SQL)数据库、键值存储和文档模型数据库运行,既可作为独立服务部署,也可作为Go库嵌入进程内使用。
项目文档中列出的主要功能包括:
- 多模型访问:支持带事务和Blob的SQL、具备验证读写功能的键值API以及文档模型。
- PostgreSQL协议兼容性:标准PostgreSQL客户端和ORM(如psql、pgAdmin、JDBC、SQLAlchemy、Django、GORM、ActiveRecord、lib/pq、pgx)可直接连接。支持的SQL特性包括RETURNING子句、公共表表达式(WITH / WITH RECURSIVE)、窗口函数(ROW_NUMBER、RANK、LAG、LEAD等)、视图、序列、多种连接和子查询、集合操作、基于SAVEPOINT的事务控制、COPY FROM stdin批量导入、部分索引以及75多个内置函数。通过pg_catalog和information_schema表模拟目录以支持ORM内省。已知限制包括不支持存储过程/PLpgSQL、不支持GIN/GiST索引(仅支持B-tree)以及不支持生成列。
- 时间旅行查询:DIFF OF SQL语法可比较两个事务范围之间的表状态,并将行标记为INSERT、UPDATE或DELETE。
- 通过SQL进行加密验证:immudb_state()、immudb_verify_row()、immudb_verify_tx()和immudb_history()等函数直接在查询中暴露证明系统。
- 结构化审计日志:可选的不可变JSON审计事件记录每个gRPC操作(时间戳、用户、IP、数据库、方法、类别、持续时间、会话ID),存储在immudb自身的防篡改KV存储中,并可导出到SIEM系统。
- 部署选项:预编译二进制文件、Docker镜像、Kubernetes Helm图表以及嵌入式库模式。数据可存储在Amazon S3或MinIO等兼容S3的替代方案上,支持AWS IAM角色和Fargate凭证来源。
- 客户端生态系统:官方提供Java、Go(包括GORM适配器)、.NET、Python和Node.js的SDK;用于交互式管理的immuclient CLI;以及为没有SDK的语言提供的REST网关immugw。Rust用户被引导使用标准PostgreSQL客户端或生成的gRPC代码,因为crates.io上的immudb crate是非官方的。
- 安全加固:归档恢复中的路径遍历验证、用户/权限变更时的即时会话失效、受限的令牌文件权限,以及当PostgreSQL兼容服务器在未启用TLS的情况下运行时发出启动警告。
实际应用场景包括不可变地存储敏感字段变更(如支付数据)、保护CI/CD构建配方、存储证书和校验和、防篡改日志流以及记录传感器或位置数据。项目网站提供文档、Web控制台演示和Python SDK游乐场。
评论
0 评分人数达到10人后显示
登录后参与讨论。