immudb是一个具有内置加密证明和验证功能的数据库,旨在跟踪敏感数据的变更并确保数据历史的完整性。其核心特性是不可变性:用户可添加现有记录的新版本,但无法修改或删除已有记录,从而防止数据被篡改。immudb同时支持键值存储和关系型数据库(SQL)两种模式,能处理百万级事务/秒,可作为独立服务部署或嵌入应用中,适用于从IoT设备到云端的多种环境。
| 类别 | 描述 |
|---|---|
| 数据库模型 | 键值存储(3D访问:tx-key-value)、SQL关系型数据库 |
| 数据模式 | 无模式(schema-free) |
| 实现设计 | 基于并行Merkle树的加密提交日志,支持同步/异步索引(扩展B树) |
| 开发语言 | Go |
| 支持操作系统 | BSD、Linux、OS X、Solaris、Windows、IBM z/OS |
| 事务支持 | ACID,快照隔离(SSI) |
| 一致性模型 | 即时一致性(Immediate Consistency) |
| 持久化 | 支持 |
| 快照 | 支持 |
| 吞吐量 | 高读写吞吐量,优化SSD存储 |
immudb适用于需确保数据完整性和防篡改的场景,典型案例包括:
使用Docker快速启动immudb容器:
bash# 使用host网络(推荐,直接使用主机网络栈) docker run -d --net host -it --rm --name immudb codenotary/immudb:latest # 非host网络(需暴露端口) docker run -d -p 3322:3322 -p 9497:9497 -it --rm --name immudb codenotary/immudb:latest
说明:3322为gRPC API端口,9497为其他服务端口。
如需持久化数据,挂载本地目录:
bashdocker run -d -p 3322:3322 -p 9497:9497 -v /path/to/local/data:/var/lib/immudb -it --rm --name immudb codenotary/immudb:latest
通过Helm Chart部署:
bash# 添加Helm仓库 helm repo add immudb [***] helm repo update # 安装immudb(自动生成名称) helm install immudb/immudb --generate-name
Helm Chart默认使用持久卷的子路径(如immudb目录)存储数据,避免与卷根目录下的系统文件(如/lost+found)冲突。如需禁用子路径或修改路径:
bash# 禁用子路径(适用于已有数据迁移) helm install immudb/immudb --generate-name --set volumeSubPath.enabled=false # 自定义子路径 helm install immudb/immudb --generate-name --set volumeSubPath.path=my-subdir
immudb支持通过环境变量配置,关键参数如下:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
IMMUDB_S3_STORAGE | 是否启用Amazon S3存储(true/false) | false |
IMMUDB_S3_ACCESS_KEY_ID | S3访问密钥ID | - |
IMMUDB_S3_SECRET_KEY | S3密钥 | - |
IMMUDB_S3_BUCKET_NAME | S3桶名称 | - |
IMMUDB_S3_LOCATION | S3区域(如us-east-1) | - |
IMMUDB_S3_PATH_PREFIX | S3存储路径前缀 | - |
IMMUDB_S3_ENDPOINT | S3服务端点(兼容MinIO等S3替代服务) | - |
IMMUDB_S3_EXTERNAL_IDENTIFIER | 是否使用S3作为标识符主源(适用于临时磁盘) | false |
配置immudb使用Amazon S3或兼容服务(如MinIO)存储数据:
bashexport IMMUDB_S3_STORAGE=true export IMMUDB_S3_ACCESS_KEY_ID=AKIAEXAMPLE export IMMUDB_S3_SECRET_KEY=secret export IMMUDB_S3_BUCKET_NAME=my-immudb-bucket export IMMUDB_S3_LOCATION=us-east-1 export IMMUDB_S3_PATH_PREFIX=immudb-data export IMMUDB_S3_ENDPOINT="[***]" # 启动容器(传递环境变量) docker run -d -p 3322:3322 -p 9497:9497 \ -e IMMUDB_S3_STORAGE=true \ -e IMMUDB_S3_ACCESS_KEY_ID=AKIAEXAMPLE \ -e IMMUDB_S3_SECRET_KEY=secret \ -e IMMUDB_S3_BUCKET_NAME=my-immudb-bucket \ -e IMMUDB_S3_LOCATION=us-east-1 \ -e IMMUDB_S3_PATH_PREFIX=immudb-data \ -e IMMUDB_S3_ENDPOINT="[***]" \ --name immudb codenotary/immudb:latest
使用***客户端immuclient连接immudb:
bash# 交互式连接(需与immudb在同一网络) docker run -it --rm --net host --name immuclient codenotary/immuclient:latest # 执行单条命令 docker run -it --rm --net host codenotary/immuclient:latest help
bash# 连接后设置键值对 immuclient> set mykey "sensitive data" # 获取并验证键值 immuclient> get mykey # 查看历史版本 immuclient> history mykey
immudb提供多语言SDK,方便应用集成:
更多文档和示例可参考 ***文档 或 客户端示例库。
immudb基于 Apache v2.0许可证 开源。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429