1. sfsDb架构设计解析
sfsDb作为一款面向工业物联网边缘计算场景的高性能嵌入式数据库,其架构设计充分考虑了边缘环境的特殊需求。整个系统采用经典的三层架构设计,从下到上分别是存储层、引擎层和应用层。
1.1 存储层设计
存储层是整个数据库的基础,sfsDb选择LevelDB作为底层存储引擎,主要基于以下几个考量:
- 嵌入式特性:LevelDB作为嵌入式KV存储,无需单独部署服务,非常适合边缘计算场景
- 高性能写入:LevelDB的LSM树结构特别适合写入密集型场景
- 稳定性:LevelDB经过Google多年生产环境验证,稳定性有保障
在storage包中,sfsDb对LevelDB进行了封装,提供了统一的KV存储接口Store。这个设计非常巧妙:
go复制type Store interface {
Get(key []byte) ([]byte, error)
Put(key []byte, value []byte) error
Delete(key []byte) error
// ...其他方法
}
提示:接口设计遵循了"依赖抽象而非实现"的原则,为未来替换底层存储引擎提供了可能。
1.2 引擎层设计
引擎层是sfsDb的核心,负责表管理、索引、CRUD等核心功能。engine包中的Table结构体设计有几个亮点:
- 半结构化设计:通过fields map支持动态添加字段
- 泛型支持:字段值使用any类型,可以存储任意数据类型
- 缓存优化:TableCache结构缓存常用数据,减少IO操作
go复制type Table struct {
fields map[string]any // 字段映射
fieldsid map[uint8]string // id到字段名的映射
indexs *Indexs // 索引集合
// ...其他字段
}
这种设计非常适合工业物联网场景,因为:
- 设备属性可能随时变化(半结构化)
- 传感器数据类型多样(泛型支持)
- 查询性能要求高(缓存优化)
