数据库安全后端【免费下载链接】immudbimmudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history项目地址https://gitcode.com/gh_mirrors/im/immudb点击查看免费下载immudb 是一款内置密码学证明与验证能力的不可变数据库支持 Key-Value、文档模型与 SQL 三种数据模型。本文以仓库根目录的 CHANGELOG.md 为骨架系统梳理 immudb 从 v0.6 到 v1.11.1 的核心技术演进嵌入式 SQL 引擎的能力扩张、不可变存储层的防篡改设计、PostgreSQL 协议兼容、同步/异步复制、结构化审计日志以及安全依赖更新。读完本文你将理解 immudb 各版本之间的功能脉络并能根据版本号快速定位对应能力与已知问题的修复情况。一、版本时间线与总体脉络CHANGELOG 采用 Semantic Versioning 规范记录了自 2020 年 v0.6.0 以来的全部重要变更。从时间线看immudb 的技术演进大致可分为几个阶段版本区间时间范围主题v0.6.x – v0.9.x2020 – 2021核心存储与 Key-Value 能力、客户端 SDK 成型v1.0.x – v1.1.02021首个 1.0 稳定版、SQL 引擎初具规模、复制能力起步v1.2.x – v1.4.x2021 – 2022事务模型成熟、预提交/同步复制、数据库加载/卸载v1.5.0 – v1.9.x2023 – 2025文档引擎、多索引、pg_catalog 系统表、CASE/JOIN 扩展v1.10.0 – v1.11.12025 – 2026PG 兼容性大幅提升、审计日志、性能优化与安全加固最新稳定版本为v1.11.12026-06-26紧邻其后的 v1.11.02026-04-23是一次大规模功能发布。CHANGELOG 开头的[Unreleased]段落则记录了尚未定版的新增内容例如 immuadmin 对sysadmin权限的支持与 auditor 的新--audit-verify-values标志。二、嵌入式 SQL 引擎从基础查询到 PostgreSQL 兼容2.1 早期 SQL 能力积累v1.0 – v1.3SQL 引擎在 v1.0.0 前后进入嵌入式层embedded/sql并逐步沉淀出基础能力类型系统支持 INTEGER有符号 int64、VARCHAR、BOOLEAN、BLOB前缀x、TIMESTAMP并实现 varchar → int/float 的隐式转换type_conversion.go。DDL/DMLCREATE/DROP TABLE、CREATE/DROP INDEX含唯一索引与多列索引、INSERT/UPDATE/DELETE、IS NULL / IS NOT NULL、LIKE / NOT LIKE、IN子句。主键与自增v1.1.0 引入单列与多列主键、auto-incremental 整数主键并通过ExecAll返回更新行数 最后插入主键的执行摘要对应 pkg/api/schema 中 SQL 执行结果的 proto 定义。事务支持v1.2.0 起提供交互式sqlTx与BEGIN语句事务基于不可变存储层的 OngoingTx见 sql_tx.go。2.2 JOIN 与子查询爆发v1.5 – v1.9从 v1.5.0-RC1 到 v1.9.xSQL 引擎进入能力扩张期文档引擎embedded/document也复用了 SQL 引擎作为底层查询执行器连接类型LEFT JOIN、INNER JOIN、JOIN 子查询、多列索引上的联接优化。条件与表达式简单/完整 CASE 语句、COALESCE、EXTRACT FROM TIMESTAMP、BETWEEN AND、逻辑运算符优先级NOT/AND/OR修正。系统表v1.9.6 开始支持核心 pg_catalog 表pg_class、pg_namespace、pg_roles并在 pkg/pgsql/sys 中逐步补齐。对应实现可参阅 parser.go 与文法定义 sql_grammar.y。2.3 v1.11.0SQL 能力的大规模发布v1.11.0 是 CHANGELOG 中最浓墨重彩的一笔其 SQL 特性清单几乎覆盖了现代关系型数据库的常见语法表间比较DIFF OF查询——通过SELECT _diff_action, ... FROM (DIFF OF t) SINCE TX N UNTIL TX M对比两个事务点之间的表状态这一能力与不可变存储天然契合。连接家族FULL OUTER JOIN、LATERAL、CROSS JOIN、NATURAL JOIN、JOIN USING对应实现见 full_outer_join_reader.go 与 joint_row_reader.go。子查询与 CTEEXISTS、IN、相关子查询、WITH以及WITH RECURSIVE。窗口函数LEAD、LAG、FIRST_VALUE、LAST_VALUE、NTILE配合每查询内存上限。集合运算EXCEPT、INTERSECT、UNION。DDL 家族CREATE/DROP VIEW持久化、部分索引、TRUNCATE TABLE、DROP TABLE IF EXISTS CASCADE、ALTER COLUMN、SAVEPOINT/RELEASE/ROLLBACK TO、外键、SEQUENCES、带持久化的 DEFAULT 列值。DML 增强RETURNING、ON CONFLICT DO UPDATE、FETCH FIRST N ROWS ONLY、LIMIT ALL、NULLS FIRST/LAST。函数库扩充COALESCE、NULLIF、GREATEST、LEAST、EXTRACT、BETWEEN AND、ILIKE、STRING_AGG、RANDOM、GEN_RANDOM_UUID、TO_NUMBER、CONCAT_WS、REGEXP_REPLACE、LPAD、RPAD、SPLIT_PART、INITCAP、CHR、ASCII、MD5、TRANSLATE、DATE_TRUNC、TO_CHAR、DATE_PART、AGE、CLOCK_TIMESTAMP实现集中在 functions.go。执行引擎未索引 GROUP BY 的哈希聚合、按会话 SQL 解析缓存、经 Clone 复用缓存的 Engine catalog、前缀指纹读集prefix-fingerprint read-set、PG 风格 CASE 分支加宽、EXPLAIN 输出用于计划检查。2.4 PostgreSQL 协议兼容pgsql 服务器与 SQL 语法同步推进的是 PG 线协议wire protocol兼容层 pkg/pgsql/serverv1.1.0 起支持简单查询与扩展查询消息extended query、flush 消息、多语句、TLS。v1.9.x 引入 COPY FROM stdin支持 Rails ActiveRecord、XORM、Gitea、SQLAlchemy、JDBC 与 pgAdmin 驱动的端到端集成。v1.11.0 补齐\d、\dt、\di等 psql 反斜杠命令将其路由到真实 catalog 数据同时将 pg_catalog 与 information_schema 完整实现为真实系统表pkg/pgsql/sys 下的 31 个源文件并移除了旧 pgschema 解析层约 1500 行代码。v1.11.0 还引入基于 AST 的 SQL 重写器beta--pg-rewriterast默认关闭与COPY FROM stdin协议支持。当前仓库 README 已同步重构为PostgreSQL 兼容性矩阵结构相关实现细节可进一步阅读 pkg/pgsql/server 与 docs/pg-compat-roadmap.md。三、不可变存储层防篡改的根基3.1 存储组件架构immudb 的不可变性由 embedded/store事务与提交、embedded/tbtree有序索引与 embedded/ahtree追加哈希树生成线性加密证明三者协作保证。CHANGELOG 中大量条目围绕这三层展开v1.2.x引入逻辑条目过期logical entries expiration、KV 元数据序列化、只读事务条目、时间戳类型支持。v1.3.x基于时间的事务查找、范围键更新读取、快照与读集MVCC 读集边界校验。v1.4.x预提交事务precommitted tx机制成型——事务先在 commit log 持久化、再异步提交复制场景依赖该能力同时支持事务丢弃discard与外部提交许可模式。v1.5.x嵌入值模式embedded values、文件预分配、值缓存、可选的完整性检查skipIntegrityCheck 参数。v1.9.0多索引multi-indexing与动态索引、值保留历史value-preserving history、GetBetween历史区间读取、键读取器支持历史值。3.2 v1.11 的存储与性能优化v1.11.1 针对存储层做了多项修复与优化能直观反映不可变存储的实现细节恢复路径增强非正常关闭如 OOMKill后若磁盘残留预提交事务多于MaxActiveTransactions恢复逻辑会动态倍增 precommit buffer 而非直接返回ErrBufferIsFull避免数据库永久不可恢复对应 precommit_buffer.go。索引错误退避将此前每次索引错误导致的 60 秒硬性写入冻结替换为有界指数退避100ms 起、每轮翻倍、上限 60s整轮成功后复位。参数变更可见性以不同MaxValueLen、MaxKeyLen、MaxTxEntries、FileSize重新打开 store 时不再被静默忽略而是发出告警并同时打印新旧值options.go 中的校验逻辑。3.3 索引tbtree的持续打磨tbtreetamper-proof B-tree贯穿多个版本的优化主题CHANGELOG 明确记录的有快照一致性校验、checksum 校验、自愈索引、索引压缩compaction与数据丢弃。节点分裂策略middle node split、批量插入、二分查找、清理百分比cleanupPercentage参数化。v1.9.7 修复将时间戳保存到独立文件避免空索引重扫。这些能力对应 tbtree.go 与 snapshot.go 的实现。四、事务、复制与数据库管理4.1 事务模型v1.2.0-RC1 至 v1.2.4 是事务能力的关键窗口OngoingTx API、保守读冲突校验、MVCC 读集、可取消事务、执行摘要updated rows / last inserted pk相继落地。事务头版本化tx header versioning与元数据序列化也为后续复制与审计铺路。4.2 复制演进v1.1.0初始主动复制能力active replicationsystemdb 与 defaultdb 的 follower 复制。v1.4.x同步复制sync replication核心支持——预提交事务导出/提交、follower 预提交状态跟踪、事务丢弃、sync-acks语义、可配置的prefetchTxBufferSize与replicationCommitConcurrency。v1.9.x基于双向流bidirectional streaming的流式复制支持异步与同步两种模式复制时跳过完整性检查与索引由 pkg/replication 中的 pipeline.go 与 replicator.go 承载。v1.11.0回退了 A4 pipelined fetch对 poll 协议不适用强调复制逻辑以主从状态机的一致性为先。4.3 数据库管理能力v1.2.x 引入数据库加载/卸载load/unload、database settings 查询端点、flush index 端点、删除数据库端点v1.5.x 增加数据库截断truncationvlog 截断 保留期与文档目录复制。v1.9.x 起pkg/server支持从 SQL 语句创建/选择数据库并通过 multidb handler 统一管理多数据库用户与权限。五、审计、安全与可观测性5.1 结构化审计日志v1.11.0 引入了带不可变审计轨迹的结构化审计 loggerreload 路径、异步 flush、崩溃后持久化相关代码在 pkg/auditevent.go、logger.go、query.go。v1.11.1 进一步为 auditor 新增--audit-verify-values开关在链式证明校验之后重新读取每个已提交值并做 SHA-256 校验磁盘上的任何篡改都会让审计周期失败——这是零信任理念的落地体现默认保持仅链式校验行为不变。5.2 认证与权限v1.9.1用户创建/修改时权限自动撤销既有权限list users 从 multidb handler 统一提供。v1.11.1immuadmin 的user create与user permission命令接受sysadmin权限运维人员无需依赖默认 immudb 账号即可从命令行引导额外的 sysadmin 账号对应 cmd/immuadmin。v1.4.1支持通过--force-admin-password重置 sysadmin 密码并在未重置时输出警告。5.3 依赖安全更新v1.11.1v1.11.1 集中升级了一批关键依赖以消除已知 CVE依赖版本变化修复内容golang.org/x/cryptov0.48.0 → v0.52.08 个 HIGH 5 个 MEDIUM CVEgolang.org/x/netv0.50.0 → v0.55.07 个 HIGH 1 个 MEDIUM CVEgolang.org/x/sysv0.41.0 → v0.45.0CVE-2026-39824github.com/jackc/pgx/v5v5.9.1 → v5.9.2CVE-2026-41889github.com/sirupsen/logrusv1.8.1 → v1.9.3Entry.Writer()DoSurllib3test/e2e→ v2.7.0CVE-2026-444325.4 可观测性指标v1.3.x 引入 indexer 指标、S3 相关指标、btree 缓存/压缩 Prometheus 指标v1.9.x 增加复制延迟指标tools/monitoring/grafana-dashboard.json 提供开箱即用的 Grafana 面板。健康检查v1.0.5 起 immudb 与 auditor 暴露/healthz、/version端点auditor 统一提供/metrics、/initz、/readyz、/livez。服务器选项v1.3.2 增加 pprof 选项与 MaxSessions 限制pkg/server/sessions。六、部署形态Docker 与 HelmCHANGELOG 记录了部署侧的持续投入v1.9.3支持 ARM64 镜像构建。v1.10.0Helm Chart 全面配置支持helm/values.yaml、helm/templates。v1.11.1官方镜像通过docker buildx同时构建linux/amd64与linux/arm64Go 在构建平台上原生交叉编译、不再依赖 QEMU同时修复 almalinux-8-minimal 镜像因 UID/GID 不一致目录属主 65532、运行时用户immu为 3322导致的permission denied问题现在IMMU_UID/IMMU_GID统一为 3322。v1.1.0提供 scratch 与 debian 两种基础镜像v1.9.1 起加入内嵌 swagger UI 的镜像用于 AWS Marketplace。七、嵌入式使用与向后兼容immudb 不仅以独立服务形态运行也可作为 Go 库全进程嵌入见 docs/EMBEDDING.md 与 examples/embedded/main.go。CHANGELOG 中多次强调向后兼容v1.2.0 修复 protobuf 与 1.1 版本的兼容性v1.9.x 增加 proof version 概念允许通过 immuadmin 调整 proof 兼容性。复制与预提交机制支持旧版本 follower 的向后兼容模式backward compatible replication。仓库 test/data_v1.1.0 保留了 v1.1.0 的旧数据文件用于回归测试验证新版本能读取旧数据。八、从版本历史中提炼的升级建议结合 CHANGELOG 的 Bug Fixes 段落升级时值得重点关注以下修复点均在后续版本已解决v1.11.0 引入的两个崩溃缺陷v1.11.1 修复大结果集ORDER BY … OFFSET落盘排序时的空指针解引用空/纯注释 SQL 输入导致的索引越界现在返回ErrExpectingDQLStmt。SQL 参数绑定问题SELECT WHERE col $1对缓存预编译语句重复执行时复用首个绑定值的问题带时区后缀Z、±HH:MM的 TIMESTAMP 参数绑定被拒绝的问题两者均在 v1.11.1 修复。COUNT(col)语义v1.11.1 起COUNT(col)与COUNT(DISTINCT col)均正确跳过 NULL不再对非空表返回 0。升级依赖安全风险若使用旧版本建议至少升级到 v1.11.1 以覆盖 x/crypto、x/net、pgx、logrus 等依赖的已知 CVE。结语通过 CHANGELOG 可以清晰看到 immudb 的三条技术主线以 ahtree/tbtree/store 为核心的不可变防篡改存储、以嵌入式 SQL 引擎为基座并逐步逼近 PostgreSQL 兼容的查询层、以及贯穿始终的客户端验证、不信任数据库的零信任安全模型。对于希望深入源码的读者可以从 embedded/store/immustore.go、embedded/sql/engine.go 与 pkg/server/server.go 三个入口开始结合本文梳理的版本脉络逐层阅读。赞分享数据库安全后端【免费下载链接】immudbimmudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history项目地址https://gitcode.com/gh_mirrors/im/immudb点击查看免费下载相关推荐Realm Swift 版本演进全解析从 CHANGELOG 看移动数据库十年技术路线图Realm Swift 版本演进全解析从 CHANGELOG 看移动数据库十年技术路线图 Realm Swift 是面向 iOS/macOS 的移动数据库框架数据库移动开发嵌入式数据库vim-go 版本演进全解析从 CHANGELOG 看 Go 插件十年技术路线图vim go 版本演进全解析从 CHANGELOG 看 Go 插件十年技术路线图 vim go 是 Vim/Neovim 生态中最成熟的 Go 语言开发插件之开发工具bootstrap-table 版本演进全解读从 CHANGELOG 看 1.0 到 1.27 的架构变迁与技术路线bootstrap table 版本演进全解读从 CHANGELOG 看 1.0 到 1.27 的架构变迁与技术路线 导读 bootstrap table前端UI组件上一篇GetX Codelab 实战从计数器到响应式状态管理与依赖注入的完整入门指南下一篇Hazel Engine代码规范C风格指南与静态分析工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Word表格1.5倍行距文字靠上?取消对齐到网格即可解决 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:36:48
DShot协议原理与实战:从数字通信范式到飞控电调协同 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:36:48
STM32驱动雾化片:PWM频率配置与半桥电路设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:36:48
DeskcommCRM实战指南:中小团队客户管理与工单协作落地 先交代一个背景:从去年开始,我一直在一家做社区服务的团队里负责运营支撑系统的选型和落地。团队规模不算大,二十来号人,但每天要处理的客户咨询、工单流转、商机跟进量大得惊人。最早用共享表格加个人微信干活,客户信… · 2026/9/25 5:18:47
DeskcommCRM实践:如何将散落沟通记录转化为可管理的客户资产 1. 为什么需要 DeskcommCRM:把散落的沟通记录变成客户资产做客户管理这件事,我和大多数小团队负责人一样,一开始根本没想到要上系统。团队就几个人,客户情况基本靠脑子记,顶多在 Excel 里维护一张客户表。直到有一次&a… · 2026/9/25 5:18:47
LiteDB 事务与 WAL 回归覆盖指南:持久化、隔离、清理与终结化的边界测试体系 嵌入式数据库文档数据库 【免费下载链接】LiteDB LiteDB - A .NET NoSQL Document Store in a single data file 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB 点击查看 免费下载 导读
本文基于 LiteDB 仓库中的 docs/transaction-regression-coverage.md… · 2026/9/25 5:18:47
RSuite Badge 的 offset 属性实战:精细微调标记相对于被包裹元素的位置 前端UI组件 【免费下载链接】rsuite 🧱 A suite of React components . 项目地址: https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 在 RSuite 中,Badge 标记组件常用于在图标或按钮上展示未读数量或状态。当默认锚点位置&… · 2026/9/25 5:18:41
Codex 在 Linux 工作机上的登录、迁移与避坑指南:TaoToken 统一 Key 配置实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:18:41
PX4 接入 Femtomes MINI2 双天线 RTK 接收机:从接线、串口参数到航向融合配置指南 嵌入式物联网机器人自动驾驶智能硬件 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 点击查看 免费下载 Femtomes MINI2 是一款面向厘米级高精度定位场景的 RTK(实时动态ÿ… · 2026/9/25 5:18:35
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37