SonnetDB 是由 IoTSharp 团队(maikebing)开源发布的一款高性能时序数据库引擎,基于 C# / .NET 10 构建,采用 MIT 许可证。该项目专为 IoT 物联网、工业控制、运维监控和实时分析场景 设计,标志着 .NET 生态在时序数据领域的重大突破。
注意:GitHub 链接
[github.com/IoTSharp/SonnetDB](https://github.com/IoTSharp/SonnetDB)当前已经可访问。 该项目已完成首个重要里程碑,具备生产级能力。
SonnetDB 在多项基准测试中展现出色的性能表现:
测试场景 | SonnetDB | SQLite | InfluxDB | TDengine REST |
|---|---|---|---|---|
100万点单序列写入 | 545ms (180万点/秒) | 1.5x 慢 | 9.6x 慢 | 80x 慢 |
10万行范围查询 | 6.71ms | 6.6x 慢 | 61x 慢 | - |
16,667时间桶聚合 | 42ms | - | - | - |
测试环境:i9-13900HX / Windows 11 / .NET 10.0.6 / Docker WSL2
这些 benchmark 数据表明,SonnetDB 在写入吞吐量、查询延迟和聚合计算等核心场景中,相比主流时序数据库有数量级的性能优势。
SonnetDB 核心设计理念是进程内直接使用,无需独立部署服务进程,这与传统时序数据库(如 InfluxDB、TDengine)的部署模式形成鲜明对比:
┌─────────────────────────────────────────┐
│ Application Process │
│ ┌─────────────────────────────────┐ │
│ │ SonnetDB Engine │ │
│ │ ┌─────┐ ┌───────┐ ┌─────────┐ │ │
│ │ │ WAL │ │MemTable│ │Segments │ │ │
│ │ └─────┘ └───────┘ └─────────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘嵌入式设计的优势在于:
SonnetDB 采用类似 RocksDB 的经典存储架构,分为四层:
SonnetDB 坚持 100% 托管代码 设计理念,不使用任何 unsafe 代码块:
// 基于 Span<T> 和 ReadOnlySpan<T> 的零拷贝读取
public readonly struct DataPoint
{
public long Timestamp { get; }
public double Value { get; }
public DataPoint(ReadOnlySpan<byte> buffer)
{
// 安全地解析二进制数据,无需 unsafe
Timestamp = BinaryPrimitives.ReadInt64LittleEndian(buffer.Slice(0, 8));
Value = BitConverter.ToDouble(buffer.Slice(8, 8));
}
}这种设计确保了:
// 原生 LINQ 查询支持
var results = db.Query<Telemetry>()
.Where(t => t.DeviceId == "sensor-001")
.Where(t => t.Timestamp >= startTime && t.Timestamp <= endTime)
.GroupBy(t => t.Timestamp.Date)
.Select(g => new { Date = g.Key, Avg = g.Average(x => x.Value) })
.ToList();作为 IoTSharp 生态的核心组件,SonnetDB 与平台其他组件无缝协作:
IoTSharp Platform
┌──────────────────────────────────────┐
│ 设备接入层 (MQTT/HTTP/CoAP) │
├──────────────────────────────────────┤
│ 规则链引擎 (Rule Chain) │
├──────────────────────────────────────┤
│ 时序存储层 │
│ ┌────────────────────────────────┐ │
│ │ SonnetDB (推荐) │ │
│ │ - 嵌入式部署 │ │
│ │ - 高吞吐写入 │ │
│ │ - 高效聚合查询 │ │
│ └────────────────────────────────┘ │
│ (可选: InfluxDB/IoTDB/TDengine) │
└──────────────────────────────────────┘在工业边缘网关中,SonnetDB 的嵌入式特性使其成为理想选择:
智能设备可直接嵌入 SonnetDB:
// 设备端轻量级存储
var db = new SonnetDB("device.db");
db.Write(new Telemetry {
DeviceId = "sensor-001",
Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
Value = 23.5
});特性 | SonnetDB | InfluxDB | TDengine | TimescaleDB |
|---|---|---|---|---|
部署模式 | 嵌入式 | 服务型 | 服务型 | 扩展型 |
.NET 原生 | ✅ | ❌ | ❌ | ❌ |
写入性能 | 180万点/秒 | ~20万点/秒 | ~100万点/秒 | ~50万点/秒 |
许可证 | MIT | MIT | AGPL | Apache 2.0 |
生态集成 | IoTSharp | 通用 | 工业物联网 | PostgreSQL 生态 |
SonnetDB 的出现填补了 .NET 生态缺乏高性能嵌入式时序数据库 的空白。凭借其:
SonnetDB 为 .NET 开发者提供了一个在 IoT 场景下替代 InfluxDB、Prometheus 的优秀选择。随着 IoTSharp 生态的持续完善,SonnetDB 有望成为 .NET 领域时序数据存储的事实标准。
参考来源:
⚠️ 提示:SonnetDB 当前仓库可能处于早期开发或私有阶段,建议关注 IoTSharp 官方动态获取最新信息。