docs.rs failed to build rustminidb-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
RustMinidb
轻量级嵌入式关系型数据库 · 原生 REST API · 单文件存储
RustMinidb 是一个使用 Rust 编写的轻量级嵌入式关系型数据库,基于 redb 存储引擎(ACID、MVCC、单文件)。原生内置 HTTP REST API 服务器,适合物联网、边缘计算和嵌入式场景。
特性
⚡ 核心能力
| 特性 | 说明 |
|---|---|
| 嵌入式 | 无需独立服务进程,可作为 Rust 库直接嵌入你的程序 |
| SQL 支持 | 标准 SQL 语法(CREATE / INSERT / SELECT / UPDATE / DELETE / DROP) |
| ACID 事务 | 基于 redb 引擎,支持原子性、一致性、隔离性、持久性 |
| MVCC | 多版本并发控制,读写互不阻塞 |
| 单文件存储 | 整个数据库存储在一个 .db 文件中,零配置 |
| 多数据类型 | INTEGER、FLOAT、TEXT、BLOB、BOOLEAN、TIMESTAMP |
🌐 REST API 服务器
公开端点(免认证):
| 端点 | 方法 | 说明 |
|---|---|---|
/ |
GET | Web 管理后台页面 |
/v1/health |
GET | 健康检查(负载均衡器监控) |
需认证端点(Bearer Token):
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/query |
POST | 执行 SQL 语句 |
/v1/tables |
GET | 列出所有表 |
/v1/schema/{table} |
GET | 查看指定表结构 |
/v1/export |
GET | 导出数据库为 SQL |
/v1/metrics |
GET | 运行时监控指标 |
/v1/databases |
GET | 多数据库管理 |
/v1/import |
POST | 数据导入 |
🛠️ 实用工具
- 交互式 Shell — 类似
sqlite3的命令行控制台 - SQL 导出迁移 — 支持 Standard / MySQL / PostgreSQL / SQLite 四种方言
- 监控仪表盘 — 运行时 QPS、延迟、连接数等指标
- 彩色 Banner — 增强型启动欢迎画面(ANSI 彩色 Logo)
- 请求追踪 — UUID 级请求链路追踪
- 🔒 API 认证 — Bearer Token 保护全部数据接口
使用场景
| 场景 | 说明 |
|---|---|
| 🔌 物联网 / 边缘计算 | 嵌入式设备上的本地数据存储,通过 REST API 远程查询 |
| 📱 移动 / 桌面应用 | 作为应用内数据库,替代 SQLite 的 Rust 原生方案 |
| 🧪 测试 / 原型开发 | 快速搭建数据层原型,无需安装独立数据库 |
| 🔐 嵌入式安全场景 | 单文件加密存储,无网络端口暴露(library 模式) |
| 📦 CI/CD 管道 | 轻量级测试数据库,毫秒级启动 |
快速开始
安装
方式一:下载预编译二进制
从 Releases 下载对应平台的二进制文件。
方式二:从源码编译
# 确保已安装 Rust 工具链(https://rustup.rs)
方式三:作为依赖库(Cargo)
[]
= "0.1"
基本使用
🔹 命令行模式
# 初始化数据库
# 执行单条 SQL
# 启动交互式 Shell
# 启动 HTTP 服务器(无认证,仅限开发环境)
# 启动 HTTP 服务器(推荐:开启 Bearer Token 认证)
# 也可通过环境变量设置 Token(避免命令行泄露)
# 导出数据库为 SQL
# 查看版本
🔹 交互式 Shell 命令
在 shell 模式下可使用以下内置命令:
| 命令 | 说明 |
|---|---|
.tables |
列出所有表 |
.schema |
查看所有表结构 |
.monitor |
显示运行时指标 |
.export |
导出整个数据库为 SQL |
.exit / .quit |
退出 Shell |
.help |
显示帮助 |
🔹 REST API 使用
# 启动服务器(推荐开启认证)
# 执行 SQL(需在请求头中携带 Token)
# 健康检查(公开端点,无需 Token)
# 查看监控指标(需 Token)
# 导出数据库(需 Token)
🔹 嵌入式 Rust 库
use Database;
// 打开数据库
let db = open.unwrap;
// 建表
db.execute.unwrap;
// 插入数据
db.execute.unwrap;
// 查询数据
let rows = db.query.unwrap;
for row in rows
🔒 安全
API 访问认证
RustMinidb 内置 Bearer Token 认证 保护所有数据接口,防止未授权访问。
# 方式一:命令行参数(推荐)
# 方式二:环境变量(避免 Token 出现在进程列表)
认证规则:
| 规则 | 说明 |
|---|---|
| 未设置 Token | 所有接口完全公开(仅限开发环境) |
| 设置 Token | 除 / 和 /v1/health 外全部接口需 Authorization: Bearer <token> |
| Token 为空 | 等同于未设置,不启用认证 |
| 认证失败 | 返回 HTTP 401 Unauthorized |
公开端点(免认证):
| 端点 | 用途 |
|---|---|
GET / |
Web 管理后台页面 |
GET /v1/health |
健康检查(用于负载均衡器监控) |
安全建议:
- 生产环境必须设置
--api-token - 通过环境变量
RUSTMINIDB_API_TOKEN传入 Token,避免命令行历史泄露 - 使用反向代理(nginx / caddy)终止 TLS/SSL,确保传输加密
- 定期更换 Token
配置
RustMinidb 支持 TOML 配置文件,默认值如下:
[]
= "0.0.0.0"
= 8080
= 100
= 5000
[]
= "data.db"
= 64
[]
= "info"
= "text"
可通过命令行参数覆盖:
SQL 支持
RustMinidb 支持以下 SQL 语法(MVP 阶段):
| 语句 | 示例 |
|---|---|
| CREATE TABLE | CREATE TABLE users (id INT PRIMARY KEY, name TEXT, age INT) |
| INSERT | INSERT INTO users VALUES (1, 'Alice', 30) |
| SELECT | SELECT * FROM users WHERE age > 20 |
| UPDATE | UPDATE users SET age = 31 WHERE id = 1 |
| DELETE | DELETE FROM users WHERE id = 2 |
| DROP TABLE | DROP TABLE IF EXISTS users |
支持的数据类型:INTEGER、FLOAT、TEXT、BLOB、BOOLEAN、TIMESTAMP
支持的比较运算符:=、!=、<、>、<=、>=、AND、OR
数据迁移与导出
支持四种 SQL 方言导出:
# 标准格式导出
# 导出兼容 MySQL
# (可通过 Rust API 配置 dialect: SqlDialect::MySQL)
# 导出兼容 PostgreSQL
# (可通过 Rust API 配置 dialect: SqlDialect::PostgreSQL)
导出特性:
- ✅ CREATE TABLE IF NOT EXISTS
- ✅ 批量 INSERT(可配置每批行数)
- ✅ DROP TABLE IF EXISTS 前缀
- ✅ 事务包裹(BEGIN / COMMIT)
- ✅ 表注释导出
- ✅ 多方言类型映射
- ✅ 进度回调
构建
# 克隆仓库
# 构建(默认启用 server 特性)
# 仅构建 library(无 HTTP 服务器)
# 运行测试
# 查看帮助
技术栈
| 组件 | 技术 |
|---|---|
| 编程语言 | Rust (edition 2021) |
| 存储引擎 | redb (ACID, MVCC, 单文件) |
| SQL 解析 | sqlparser-rs |
| REST 框架 | axum |
| 运行时 | tokio |
| 序列化 | serde / bincode / serde_json |
| 日志 | tracing / tracing-subscriber |
许可证
本项目基于 BSL-1.1 许可证(Boost Software License 1.0)发布。
Boost Software License - Version 1.0
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation...