文档导航:
- 大数据量场景:请参考
大数据量存储方案.md中的 RocksDB + SQLite 混合架构方案- PostgreSQL/MySQL:请参考
PostgreSQL和MySQL分析.md了解企业级数据库的适用性- 完整实现示例:请参考
混合架构实现示例.md
不支持字段级查询
WHERE creator='张三' AND level > 5查询能力受限
数据扩展性差
维护复杂
完整的 SQL 支持
-- 可以直接查询
SELECT * FROM bus_messages
WHERE creator = '张三'
AND data_level > 5
AND create_time > '2024-01-01'
ORDER BY create_time DESC;
字段扩展容易
适合中小规模数据
Qt 原生支持
数据管理方便
CREATE TABLE raw_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_id INTEGER NOT NULL,
data BLOB NOT NULL,
create_time INTEGER NOT NULL, -- 创建时间(时间戳)
update_time INTEGER, -- 更新时间(时间戳)
creator TEXT, -- 创建者
data_level INTEGER DEFAULT 0, -- 数据等级
protocol_type TEXT, -- 协议类型
is_valid BOOLEAN DEFAULT 1, -- 是否有效
metadata TEXT, -- 元数据(JSON格式)
FOREIGN KEY (device_id) REFERENCES devices(id)
);
CREATE INDEX idx_raw_data_device_time ON raw_data(device_id, create_time);
CREATE INDEX idx_raw_data_creator ON raw_data(creator);
CREATE INDEX idx_raw_data_level ON raw_data(data_level);
CREATE TABLE bus_messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
message_id TEXT UNIQUE NOT NULL, -- 消息ID
source TEXT NOT NULL,
destination TEXT NOT NULL,
payload TEXT NOT NULL, -- JSON格式
create_time INTEGER NOT NULL,
update_time INTEGER,
creator TEXT,
data_level INTEGER DEFAULT 0,
protocol_type TEXT,
is_valid BOOLEAN DEFAULT 1,
metadata TEXT
);
CREATE INDEX idx_bus_msg_source_dest ON bus_messages(source, destination);
CREATE INDEX idx_bus_msg_time ON bus_messages(create_time);
CREATE INDEX idx_bus_msg_creator ON bus_messages(creator);
CREATE INDEX idx_bus_msg_level ON bus_messages(data_level);
CREATE TABLE devices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
portname TEXT UNIQUE,
name TEXT,
type TEXT,
address INTEGER,
protocol TEXT,
protocol_detail TEXT,
properties TEXT, -- JSON格式
create_time INTEGER,
update_time INTEGER,
creator TEXT
);
| 特性 | RocksDB | SQLite |
|---|---|---|
| 写入性能 | ⭐⭐⭐⭐⭐ 极高 | ⭐⭐⭐⭐ 高 |
| 读取性能 | ⭐⭐⭐⭐⭐ 极高 | ⭐⭐⭐⭐ 高 |
| 查询灵活性 | ⭐⭐ 低(只能按key) | ⭐⭐⭐⭐⭐ 极高(SQL) |
| 字段扩展 | ⭐⭐ 困难 | ⭐⭐⭐⭐⭐ 容易 |
| 数据管理 | ⭐⭐ 困难 | ⭐⭐⭐⭐⭐ 容易 |
| 部署复杂度 | ⭐⭐⭐ 中等 | ⭐⭐⭐⭐⭐ 简单 |
| 适合场景 | 高性能写入、简单查询 | 复杂查询、数据管理 |
对于数据量中等(< 100GB)的场景,强烈建议使用 SQLite:
性能影响:对于大多数应用场景,SQLite 的性能足够,且带来的查询灵活性远大于性能损失。
对于大数据量、高频写入的场景(TB级别、持续采集),建议使用 RocksDB + SQLite 混合架构:
详见:大数据量存储方案.md 和 混合架构实现示例.md