SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
SonnetDB 5.0.0 已于 2026 年 11 月 4 日正式发布。作为继 4.0 之后的主版本更新,5.0 围绕业务查询、事务处理、精确类型、.NET 数据访问与 AI 工具接入进行系统完善,同时改进查询执行、资源控制、持久化恢复和管理体验,为嵌入式应用、独立服务与边缘数据场景提供更完整的多模型数据能力。

AI 主题示意图,并非产品界面或实测截图。
SonnetDB 使用 C# / .NET 10 开发,采用 MIT 开源许可证,支持嵌入式与独立 Server 两种部署形态。时序、关系表、键值、JSON 文档、全文检索、向量检索、对象存储、消息队列和原生属性图共享引擎,各自保留原生数据语义;核心引擎保持无第三方 NuGet 运行时依赖,Server 提供 NativeAOT 发行物。
本次升级的主要变化
| 方向 | 相对 4.0 的重点改进 |
|---|---|
| SQL 查询与批量写入 | 新增排名窗口和字符串聚合,完善分组表达式、动态 JSON、批量更新、REPLACE、CTAS 与无主键表写入 |
| 事务与结构演进 | 增强多表事务、Serializable、保存点、受支持的事务 DDL,以及 FOR UPDATE / NOWAIT / SKIP LOCKED |
| 精确类型与元数据 | 引入原生 DATETIME2、DATETIMEOFFSET、DURATION,强化 DECIMAL 约束、名称绑定、schema 与视图元数据 |
| .NET 与生态接入 | 完善 ADO.NET 多结果、存储过程、EF Core JSON 与日期映射,新增 CAP 适配和正式 Protocol / Client 包 |
| AI 与数据工具 | 将 MCP 的发现和适用读写能力扩展至九种模型,逐调用检查权限,约束输入、分页和响应预算 |
| 执行与恢复 | 改进索引点读、有序分页、Hash Join、Top-K 候选保留、KV 排队以及 CDC / 持久订阅恢复 |
| 管理与分发 | 改善数据库上下文隔离、过期会话处理、安装初始化和容器健康检查,提供版本一致的安装器、SDK 与连接器 |
4.0 已提供的 CTE、基础窗口函数、DECIMAL、UPSERT 和 HTTP/2 Frame 等能力在本版继续演进;5.0 的重点是补齐业务组合、类型细节、并发控制与接入边界。
一、SQL:增强业务查询与集合处理能力
在既有关系查询能力上,5.0 新增 rank()、dense_rank() 和 ntile(n),支持在分区和排序基础上完成并列排名、连续排名及分桶。新增 string_agg / group_concat 基础字符串聚合,并完善聚合结果上的 CAST、标量组合和 HAVING,便于应用直接表达分组统计与展示需求。
时序 measurement 支持 TAG 与 time(duration) 时间桶的组合分组,并进一步支持分组后的筛选、复合投影、多键排序和分页。稀疏字段的空聚合与整数求和遵循明确的 NULL、精度和溢出规则,减少应用对查询结果的二次处理。
本版还扩充 lpad / rpad、三角函数、位移函数、逐次生成的 uuid(),以及完整 UInt64 值域的精确解析和按位与、或操作。SQL LIMIT / OFFSET 支持非负 Int64 范围,实际执行仍受扫描、物化和内存预算约束。
写入方面,INSERT VALUES 可以使用受支持的无行标量表达式、函数、CASE 和显式类型转换;关系表支持不带 WHERE 的全表更新。联接更新进一步接受参数化派生 VALUES / SELECT 数据源,便于批量业务更新;目标和来源按事务上下文解析,并保留语句失败原子性。
新增的原生 REPLACE 按实际冲突行执行删除再插入,保留默认值、自增值、触发器和外键删除动作,与普通 UPSERT 的更新语义分别定义。CREATE TABLE AS SELECT(CTAS)及会话临时表为中间结果和集合处理提供原生入口,临时对象按连接会话隔离并回收。
时序写入补充已声明 INT / FLOAT FIELD 的受限原子更新:按单列、TAG 等值和时间范围选择样本,每次最多更新 256 个逻辑样本,对稀疏目标、NULL、类型不匹配和未支持谓词在提交前拒绝。文档 raw SELECT 的适用路径新增单列结果排序,并在完整排序工作集上执行预算检查,避免以较小 LIMIT 掩盖扫描和排序开销。

AI 主题示意图;各语法的适用对象与限制以版本文档为准。
二、事务与并发:完善业务一致性和锁定读取
5.0 进一步完善同库关系表的多语句、多表事务,覆盖提交、回滚、保存点及失败后的恢复。受支持的关系表与索引 DDL 可进入事务工作区,降低结构变更执行到一半时留下不完整状态的风险。
事务默认采用 ReadCommitted;显式 Serializable 使用保守的表级乐观校验,在提交前检查实际读取和写入的依赖。检测到冲突时终止该事务,并返回稳定错误,调用方需要从事务起点重新执行。
显式事务中的受支持单关系基表查询新增 FOR UPDATE、NOWAIT 和 SKIP LOCKED。其中 SKIP LOCKED 会先跳过竞争行,再对可锁定行应用分页,更适合受支持范围内的任务领取类查询。锁定读取同时保留等待、取消、超时、死锁检测和事务结束释放等行为。
这些能力仍有明确范围:普通 SELECT 保持非锁定读取,FOR SHARE、任意复杂锁定查询和 gap / phantom 保护不作为本版通用承诺。远程写入或提交若因断连而无法确认结果,调用方应先独立核对状态,避免重复提交业务操作。
三、精确类型:统一时间、金额和时长的数据语义
5.0 新增原生 DATETIME2、DATETIMEOFFSET 和 DURATION。DATETIME2 与 DATETIMEOFFSET 保留 UTC 时刻的完整 100ns ticks;后者读取时返回 UTC 和零 offset,不保留输入的原始时区偏移。DURATION 对应完整有符号 Int64 ticks 的 TimeSpan,与一天内的 TIME 分别定义。
EF Core 默认 DateTime 映射调整为原生 DATETIME2,参数和日期字面量保持 UTC ticks,使审计、Identity 和 Passkey 等场景能够保存亚毫秒时间。显式使用旧 DATETIME 的列仍遵循毫秒精度,超出合同的输入明确报错,已有数据库需通过受支持的迁移流程升级列类型。
DECIMAL / NUMERIC 在 4.0 的基础上强化声明精度、小数位和写入检查,需要舍入或越界的数据在写入前拒绝;聚合、round、参数及跨协议结果继续保持十进制语义。小整数、枚举、BLOB 内容比较以及零行结果的声明类型也得到修正,降低不同接入方式之间的类型差异。
时序 measurement 的时间轴仍遵循现有毫秒合同。按数据库选择 ms / us / ns 的高精度时序方案属于后续规划,与本版关系型日期类型的 100ns 精度分别推进。
四、结构与元数据:支持更完整的建模、维护和反向工程
关系表增加独立的 schema / table 身份,默认 schema 为 main;SQL、目录、外键和 ADO.NET 元数据使用结构化身份,支持区分不同 schema 下的同名关系表。
SQL 名称保留创建时的原始拼写,普通引用按不区分大小写匹配,双引号引用按精确拼写匹配;表名、列名及相应目录输出保持一致。旧目录中的大小写冲突需要显式处理,避免静默选择错误对象。
本版补充持久序列、表和列注释、STRING(n) / VARCHAR(n) 长度约束、真实主键名称与约束目录、自增下一值维护,以及索引 DESC 编码和 INCLUDE 载荷。普通视图、物化视图和空结果集能够返回更准确的名称、类型、可空性和已知精度。
无主键关系表可通过内部持久行身份保留重复行,并支持相应的插入、条件更新、删除、事务和恢复;DELETE ... LIMIT ... RETURNING 为分批清理提供受控入口。无主键表不会凭空增加业务主键,也不因此获得按实体主键定位或任意 UPSERT 能力。
已有数据的受支持主键结构迁移,以及受限普通 INT 主键值更新,增加了完整预检、索引重建、失败回滚与恢复处理。主键类型、外键关联和语法组合仍应按对应迁移文档选择,不作为任意在线结构变更能力宣传。
五、JSON、ADO.NET 与 EF Core:减少应用接入中的特殊处理
JSON 查询新增逐行动态 JSON_VALUE 路径、动态数组下标和类型安全的 JSON_OBJECT 对象谓词。针对更新,json_set_value 支持受控的标量修改及显式 JSON 片段替换,保留目标外成员和数字原文,并对深度、节点数、输入输出大小及取消设置限制。
EF Core 完善 ToJson 聚合建模、整容器读写、固定属性路径查询,以及受支持的 OwnsOne 标量、嵌套标量和子树修改;数组等值可按片段合同替换。OwnsMany 元素路径跟踪修改和 JSON ExecuteUpdate 不列为 5.0 的已支持能力。
ADO.NET 补齐多条 SELECT 的多结果读取,通过 NextResult / NextResultAsync 切换结果及元数据,改善 DataSet / DataTable 消费。HasRows 按真实行探测,同时保留首行供后续读取,空结果仍能返回声明列。
标准存储过程命令支持受支持的 IN、OUT、INOUT 和 ReturnValue,结果读取成功完成后按合同回写输出参数;输出声明、响应大小和保存点内的失败处理一并校验。嵌入式、REST 和 HTTP/2 的适用路径分别定义,避免用相同 API 名称掩盖不同传输能力。
六、MCP:九种模型接入统一的发现与授权读写入口
5.0 将 MCP 能力扩展至九种数据模型,覆盖资源发现、读取与适用的数据面写入,并提供全文检索、显式向量检索和原生图操作等工具入口。应用与 AI 客户端可以先读取机器可读的工具 schema,再按实际能力和数据库权限组织调用。
原有 query_sql 继续只读,写入通过独立工具执行,并在每次调用时检查目标数据库的 Write grant。只有读取权限的凭据无法执行写工具;输入大小、Base64 数据、分页、图输入和响应编码均有相应预算,避免工具调用无限扩大资源占用。
本版同时提供 WorkBuddy 连接器、配置资料和可复现的联调入口。连接器的交付与外部平台的宿主验收、上架审核分别推进。MQ 工具按数据库限定主题访问,但消息物理存储与备份仍属于 Server 实例范围。

AI 主题示意图。原生属性图保持 Graph Beta;模型入口不代表完整第三方标准兼容。
七、查询与存储优化:降低不必要的扫描、复制和资源争用
5.0 的性能改进主要落在具体执行路径:
- 更准确的索引访问。 修复 nullable 参数与相关
EXISTS混淆= NULL/IS NULL后退回全表扫描的问题,完善唯一索引点读、布尔与 NULL 前缀、残余条件排序查询,以及空输入 JOIN 的处理。 - 更早结束有序查询。 适用的复合倒序索引范围查询使用有序读取和早停,保留完整并列组、稳定顺序与分页结果;INNER Hash Join 结合下推后的估算行数及行宽选择构建侧,减少不必要的物化。
- 减少恢复时的分配。 关系索引恢复仅实例化所需列,避免复制无关 JSON、文本和 BLOB 正文,同时继续检查布局、CRC 与约束。
- 控制查询中间结果。 关系查询、部分时序和文档路径增加可显式启用的累计物化预算;适用单表 REST 预览在执行阶段早停。KNN 扫描以共享 Top-K 堆保留候选,减少全量候选列表。
- 限制 KV 读取争用。 增加物理读取并发、有限队列与等待上限,为检查点保留维护容量,并改进磁盘过期项清理和事务终态回收。
直接图查询及适用表值函数也纳入相应的累计结果预算。在线索引在需要恢复推进时按需调度检查点,避免反复停留在等待状态,同时保留配置、队列和失败退避约束。
这些优化针对具体查询形状和配置生效。本次新闻不使用未经相同硬件、数据规模和持久化条件验证的吞吐量或提速倍数;协议分块与局部预算也不等于所有查询已经实现端到端固定内存执行。
八、持续数据处理与恢复:完善 CDC、订阅和窗口计算
在既有 CDC 与流处理基础上,5.0 补充本地文档源稳定快照、增量捕获、可恢复接收端和多分区有界推进。持久订阅保存事件、watermark、未确认批次及检查点,支持恢复重投、暂停 / 恢复、状态查询与受控投递计数重置。
持久窗口计算进一步覆盖固定滚动窗口、受支持的滑动窗口、会话 COUNT 窗口、字符串分组及精确数值聚合;窗口提交与 ACK 分开处理,重投时核对已提交状态。持久死信隔离、重放和条件删除为耗尽批次提供人工可控的处理入口;任务目录、有界自动投递与 CDC 到流的本地恢复桥接补充运行组织能力。
恢复验证增加真实子进程中断与重开场景,覆盖 CDC、订阅、窗口和 RAG 已持久化处理进度。当前这些能力以各自的本地合同为边界,不等同于跨节点自动复制、跨分区事务、通用 exactly-once 或物理掉电验收。
九、可靠性修复:覆盖恢复、外键、对象和管理会话
除新增能力外,5.0 还集中修复多类实际问题:
- 消息目录恢复: SonnetMQ 不再把
wal/、documents/等非 Topic 子目录强行解码;真正的消息段损坏仍会报错。 - 外键与结构迁移: 修正同一子行多个
ON DELETE SET NULL动作被去重而遗漏列的问题;修复主键保持不变时非主键类型迁移对自引用外键的不必要阻断。 - 持久化与删除恢复: 加固跨表事务日志 rename 后的目录同步,修正 Windows 长路径目录刷盘,并为
DROP MEASUREMENT增加持久删除意图与重启清理,防止未完成删除被同名重建掩盖。 - 批量 schema 演进: 写入前完整验证批次,避免后续点失败后残留前面点推断出的 measurement、新列或类型提升。
- 对象列表与回填: 修复分片上传列表游标在标记对象删除后的续读;语义回填工作预算结束时保存已持久入队前缀的进度,区分预算停止、用户取消与存储错误。
- 数据与表达式: 修正 JSON 大整数精度、DECIMAL 舍入、远程小整数与枚举参数、BLOB 内容相等、日期类型声明,以及带点引号别名和视图空结果元数据。
- 统计与图导出: 修正大整数众数 / 去重计数的身份保留,强化 HLL、TDigest 与 Histogram 状态校验;修复图导出达到顶点预算后仍有边时误报未截断的问题。
- 管理会话: 修复登录过期后自动无凭证重读,收到 401 / 403 后清理敏感结果并锁定相应界面;连接、数据库和资源切换时隔离迟到响应,避免旧结果进入新上下文。
- 安装初始化: 首次设置增加前后端校验,将管理员和首枚 Token 原子写入,避免非法输入或重复 Token 留下半初始化状态。
十、工具链、生态与发行方式
共享 Frame 类型与二进制编解码拆分到 SonnetDB.Protocol,新增只依赖共享协议的 SonnetDB.Client 轻量 HTTP/2 远程基础层。适用路径增加多帧响应身份校验、累计帧数 / 字节预算和终态检查;C ABI 改善结果逐行读取、取消、失败状态和释放行为,部分语言增加 SQL Execute 编解码。
这些是客户端与连接器的已交付切片,完整九模型 typed SDK、所有语言的原生 HTTP/2 路径和所有平台矩阵仍分别推进。本版提供的资产与平台请以发行附件清单为准。
新增 SonnetDB.CAP,提供基于 Document Store 的消息存储和 SonnetMQ 传输适配,支持相应的业务文档与 Outbox 原子批事务、消息状态、重试及消费恢复。完整 CAP 应用的 NativeAOT 兼容性仍受上游依赖影响,不能由 Server 的 NativeAOT 发行物直接推导。
Web Admin、Studio 和 VS Code 改善导航、数据库资源身份、只读 / 无权限状态、写入审批、取消与未知结果展示,并修复窄窗口工具栏、轨迹页布局和前端构建问题。统一工作台仍按各宿主与预览范围推进,不将整条工作台路线图列为本版全部完成。
分发方面,十个 5.0.0 NuGet 包已可从 NuGet.org 查询,包括:
| 包 | 用途 |
|---|---|
SonnetDB.Core |
嵌入式多模型引擎 |
SonnetDB |
ADO.NET 数据访问 |
SonnetDB.Protocol |
独立共享协议与编解码 |
SonnetDB.Client |
轻量 HTTP/2 Frame 客户端基础层 |
SonnetDB.EntityFrameworkCore |
EF Core Provider |
SonnetDB.Caching.Distributed |
分布式缓存接口适配 |
SonnetDB.Caching.EasyCaching |
EasyCaching 适配 |
SonnetDB.CAP |
CAP 存储与传输适配 |
SonnetDB.Cli |
CLI 工具 |
SonnetDB.Testcontainers |
集成测试容器模块 |
Testcontainers 模块包名统一为 SonnetDB.Testcontainers;C# 的 Testcontainers.SonnetDB 命名空间继续保留。GitHub Release 提供 Windows / Linux x64 SDK、完整 Server bundle、Windows MSI、Linux DEB / RPM、Windows Studio 及适用的 C、Go、Rust、Java、Python、PureBasic、VB6 连接器附件。
Compose 增加 /healthz/live 存活检查。相关 .NET、AI、图形、观测与前端依赖更新至本版采用的兼容版本,VS Code 打包链修复已确认的依赖安全问题,并保持最低宿主 API 的一致性。
FreeSql、XCode、Chloe、SqlSugar 和 ABP 相关接入持续按实际版本验证。引擎支持某项 SQL,不等于所有 ORM 的已发布 Provider 已同步支持;使用时应核对各 Provider 的实际依赖和公开发布状态。
十一、4.0 用户的升级注意事项
5.0 是包含托管 API 和目录兼容性变化的主版本升级,请先备份、验证,再切换。
- 停写并保存可恢复备份。 关闭旧进程,在独立目录演练 4.0 备份恢复与重新打开,保留原始备份、程序和配置。Server 实例级 MQ、身份配置及外部文件按各自范围另行备份。
- 统一依赖并重新编译。 部分公共类型由 Core 移至 Protocol,保留命名空间但改变程序集归属;分页 API 的
Offset/Fetch改为long/long?。应用、插件和 Provider 应一起检查引用。 - 在工作副本验证真实业务。 重点检查日期列迁移、精确数值、JSON、名称大小写、schema、事务、返回值、索引和重复重开。既有自动推断字符串 TAG 的摄取代码应显式声明 TAG 或预建 schema。
- 核对新目录与回退条件。 新能力会推进目录最低版本,事务 DDL 可推进至 v19;旧引擎不能打开不支持的新目录。回退须恢复升级前副本,并为升级后的新写入制定回补方案,不能只替换旧 DLL。
- 按目标环境复验。 检查真实协议、监听地址、访问凭据、数据卷和安装依赖;生产规模、长期运行及安装升级验收按实际环境执行。
关系型 VECTOR(N) / GEOPOINT 列、任意主键类型转换等不在本版通用支持范围;原生属性图仍保持 Graph Beta。单库备份不覆盖 Server 实例级 MQ,局部进程崩溃回归不替代物理掉电或介质损坏验收。
获取 SonnetDB 5.0
bash
dotnet add package SonnetDB --version 5.0.0
dotnet add package SonnetDB.EntityFrameworkCore --version 5.0.0
欢迎在使用中反馈所用版本、部署方式、访问协议和最小复现,帮助项目持续完善多模型数据访问与实际应用体验。