update doc and ci (#30)
English
MuduDB 是一个数据库系统,它使构建面向数据的应用程序更加容易,并能够将其业务逻辑直接运行在数据库环境内部。
它目前仍处于一个快速演进的早期演示阶段。
MuduDB 正在探索一组创新特性:使用通用编程语言编写、并运行在数据库内部的 WebAssembly 过程;交互式与过程式统一的执行模型;AI 辅助数据库工程;基于 io_uring 和每核 worker 的面向现代硬件的运行时;以及一键 .mpk 打包部署。
io_uring
.mpk
MuduDB 将应用逻辑与数据管理带入统一的执行环境。你无需把数据拉取到应用服务器再处理,而是使用通用编程语言编写普通的过程,将其编译为 WebAssembly,并在数据库内核内部、贴近数据的位置运行——所有执行都处在同一事务与调度权威之下。
同一个过程既可以通过客户端以交互方式调用,也可以作为服务端工作流的一部分执行,从而让临时探索与生产逻辑共享同一套模型。
Entity
sql_stmt!
sql_params!
上图展示了 MuduDB 的整体架构。
MuduDB 采用一种内核-运行时架构,将应用逻辑与数据管理带入统一的执行环境。
内核提供核心的正确性基础设施,包括存储、事务处理、查询执行以及执行控制。它并不暴露传统客户端驱动那样宽泛的接口面,而是定义了一组精简的系统调用接口,用于完成会话管理与数据访问。
运行时层通过 WebAssembly Component Model 承载用户定义的过程(WebAssembly)。运行时被刻意设计为被动组件:它不引入自己的调度器,也不定义独立的执行策略。过程执行由内核触发并控制,从而使调度、正确性与数据访问保持在同一个控制边界内。
在手写源码层面,Mudu Procedure 通常以顺序式风格使用通用编程语言编写(①)。与传统数据库专用存储过程语言不同,这些代码也可以通过客户端连接以交互方式直接调用(②)。MuduDB 的工具链能够将这类过程转换为可部署产物:同步源码可以被转换为异步生成形式(③),随后编译为 WebAssembly,并与相关资源(例如 schema 定义和初始数据)一起打包。
在运行时,过程调用(④)会在由内核管理的 worker 线程中贴近数据执行(⑤)。用户过程发出的系统调用会陷入内核,并在内核控制的事务与调度规则下运行(⑥)。这样可以让计算与数据访问保持共置,并减少关键路径上的跨边界交互。
执行围绕“每核一个 worker”的模型组织。每个 CPU 核心对应一个专用工作线程,而 I/O、网络处理以及用户代码执行都通过协作式方式复用在这些 worker 中。这种设计减少了线程间协调、加锁以及抢占式上下文切换,从而提升局部性并降低开销。
MuduDB 采用 Apache License 2.0 许可证。
MuduDB 是一个数据库系统,它使构建面向数据的应用程序更加容易,并能够将其应用业务逻辑直接运行在数据库环境内部。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MuduDB
English
MuduDB 是一个数据库系统,它使构建面向数据的应用程序更加容易,并能够将其业务逻辑直接运行在数据库环境内部。
它目前仍处于一个快速演进的早期演示阶段。
MuduDB 正在探索一组创新特性:使用通用编程语言编写、并运行在数据库内部的 WebAssembly 过程;交互式与过程式统一的执行模型;AI 辅助数据库工程;基于
io_uring和每核 worker 的面向现代硬件的运行时;以及一键.mpk打包部署。MuduDB 是什么
MuduDB 将应用逻辑与数据管理带入统一的执行环境。你无需把数据拉取到应用服务器再处理,而是使用通用编程语言编写普通的过程,将其编译为 WebAssembly,并在数据库内核内部、贴近数据的位置运行——所有执行都处在同一事务与调度权威之下。
同一个过程既可以通过客户端以交互方式调用,也可以作为服务端工作流的一部分执行,从而让临时探索与生产逻辑共享同一套模型。
核心特性
Entitytrait 自动将查询结果映射为 Rust 结构体,sql_stmt!/sql_params!宏提供编译期 SQL 校验。io_uring异步 I/O、无锁/低锁热路径,目标是更低的尾延迟和更好的多核可扩展性。.mpk文件,安装后即可运行。架构
上图展示了 MuduDB 的整体架构。
MuduDB 采用一种内核-运行时架构,将应用逻辑与数据管理带入统一的执行环境。
内核提供核心的正确性基础设施,包括存储、事务处理、查询执行以及执行控制。它并不暴露传统客户端驱动那样宽泛的接口面,而是定义了一组精简的系统调用接口,用于完成会话管理与数据访问。
运行时层通过 WebAssembly Component Model 承载用户定义的过程(WebAssembly)。运行时被刻意设计为被动组件:它不引入自己的调度器,也不定义独立的执行策略。过程执行由内核触发并控制,从而使调度、正确性与数据访问保持在同一个控制边界内。
在手写源码层面,Mudu Procedure 通常以顺序式风格使用通用编程语言编写(①)。与传统数据库专用存储过程语言不同,这些代码也可以通过客户端连接以交互方式直接调用(②)。MuduDB 的工具链能够将这类过程转换为可部署产物:同步源码可以被转换为异步生成形式(③),随后编译为 WebAssembly,并与相关资源(例如 schema 定义和初始数据)一起打包。
在运行时,过程调用(④)会在由内核管理的 worker 线程中贴近数据执行(⑤)。用户过程发出的系统调用会陷入内核,并在内核控制的事务与调度规则下运行(⑥)。这样可以让计算与数据访问保持共置,并减少关键路径上的跨边界交互。
执行围绕“每核一个 worker”的模型组织。每个 CPU 核心对应一个专用工作线程,而 I/O、网络处理以及用户代码执行都通过协作式方式复用在这些 worker 中。这种设计减少了线程间协调、加锁以及抢占式上下文切换,从而提升局部性并降低开销。
文档导航
许可证
MuduDB 采用 Apache License 2.0 许可证。