Simulation Test database是一个轻量化的时序数据库,基于rocksdb进行封装;主要目的是为嵌入式设备接口仿真、测试场景下,提供按时序记录和访问数据的轻量化API
- 首先按照这里的说明编译rocksdb
- 然后在自己的工程中加入STDB.h和STDB.cpp两个文件
STDB(const char* file_path)
- 构造函数,打开指定目录对应的数据文件,如果不存在则创建
- 保存一条记录
- key 为名称主键,通常为通道接口名称,双工通道接口注意区分in和out
- timestamp 为时间戳
- val 为要保存的具体数据,二进制安全
- 保存整数值,常用于保存模拟量采集数据
- 保存布尔值,常用于保存信号量采集数据
- get(const string &key, long long timestamp, string *val)
- geti(const string &key, long long timestamp, int *val)
- getb(const string &key, long long timestamp, bool *val)
- lget(const std::string &key, long long begin, int limit, vector<pair<long long, string>> *ret)
- lgeti(const std::string &key, long long begin, int limit, vector<pair<long long, int>> *ret)
- lgetb(const std::string &key, long long begin, int limit, vector<pair<long long, bool>> *ret)
- 说明:limit为要读取的记录数;可以为负数,表示最新的limit条数据
- lrange(const std::string &key, long long begin, long long end, vector<pair<long long, string>> *ret, long long step=0)
- lrangei(const std::string &key, long long begin, long long end, vector<pair<long long, int>> *ret, long long step=0)
- lrangeb(const std::string &key, long long begin, long long end, vector<pair<long long, bool>> *ret, long long step=0)
- 说明1: 读取的范围为时间戳位于 [begin, end) 之间的记录
- 说明2: 参数step用于指定时间戳步长,0表示连续读取;大于0的整数表示间隔step读取一条记录