docs.rs failed to build remdb-0.1.1
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.
Visit the last successful build:
remdb-0.2.9
remdb - 嵌入式内存数据库
remdb是一个轻量级的嵌入式内存数据库,专为资源受限的嵌入式系统设计,支持no_std环境,具有可预测的内存使用和高性能。
主要功能
- 内存表存储:高效的内存表实现,支持插入、删除、查询和遍历操作
- 索引机制:
- 基于哈希的主键索引,提供O(1)的查询性能
- 基于有序数组的辅助索引,支持范围查询
- 事务支持:完整的ACID事务支持,包括:
- 原子性:事务要么全部提交,要么全部回滚
- 一致性:确保数据的完整性和正确性
- 隔离性:支持多种隔离级别(未提交读、提交读、可重复读、串行化)
- 持久性:通过预写日志(WAL)确保数据持久化
- 支持记录级锁(共享锁和排他锁)
- 支持事务日志和崩溃恢复
- 内存管理:
- 静态内存分配器,无动态内存分配
- 固定大小块内存池,支持高效的内存管理
- 平台抽象层:支持POSIX和裸机环境
- 编译时配置:使用宏实现表和数据库的编译时配置,优化性能
技术特点
- 零外部依赖:不依赖任何外部库,支持no_std环境
- 静态内存分配:可预测的内存使用,适合资源受限的嵌入式系统
- 编译时优化:通过宏实现编译时配置,减少运行时开销
- 多平台支持:支持POSIX和裸机环境
- 类型安全:使用Rust的类型系统确保数据安全
- 高效的同步机制:实现了自旋锁同步机制,适合多线程环境
快速开始
安装
将remdb添加到你的Cargo.toml文件中:
[]
= { = "./remdb", = false }
# 可选特性
# features = ["std", "posix"]
基本使用示例
extern crate alloc;
use Layout;
use *;
// 定义内存缓冲区
static mut DB_MEMORY: = ;
// 定义表结构
table!;
// 定义数据库配置
database!;
// 内存分配错误处理
!
平台支持
POSIX平台
启用POSIX平台支持:
= ["posix"]
裸机平台
启用裸机平台支持:
= ["baremetal"]
测试
运行单元测试
检查编译
在no_std环境下检查编译:
示例
查看examples目录下的示例代码:
basic_usage.rs:基本使用示例,展示表定义、插入、查询和事务操作
项目结构
remdb/
├── src/
│ ├── lib.rs # 主库入口
│ ├── types.rs # 基本数据类型定义
│ ├── config.rs # 编译时配置宏
│ ├── table.rs # 内存表实现
│ ├── index.rs # 索引实现
│ ├── transaction.rs # 事务管理
│ ├── memory/
│ │ ├── allocator.rs # 静态内存分配器
│ │ ├── pool.rs # 内存池
│ │ └── mod.rs
│ └── platform/
│ ├── mod.rs # 平台抽象层定义
│ ├── posix.rs # POSIX平台实现
│ └── baremetal.rs # 裸机平台实现
├── examples/
│ └── basic_usage.rs # 基本使用示例
├── tests/
│ ├── unit/
│ │ ├── memory_test.rs # 内存管理单元测试
│ │ └── table_test.rs # 表操作单元测试
├── Cargo.toml # 项目配置
├── Cargo.lock # 依赖锁定文件
├── PLAN.md # 项目计划
└── README.md # 项目说明文档
许可证
MIT许可证
贡献
欢迎提交问题和拉取请求!
注意事项
- remdb专为嵌入式系统设计,不适合大规模数据存储
- 在no_std环境下使用时,需要提供适当的内存分配器实现
- 请确保在使用前正确初始化内存分配器和平台抽象层
未来计划
- 支持更多的数据类型
- 优化内存使用
- 提供更多的索引类型
- 增加更多的示例和文档