IotEdgeDB简介
IEDB 是基于 DuckDB 和 Parquet 构建的高性能分析型数据库。单个 Go 二进制文件,无需外部依赖。数据写入 超过 1800 万条/秒,查询 超过 600 万行/秒,存储格式为开源 Parquet,数据完全由你掌控。
5 分钟快速开始
- 1. 安装
- 2. 获取 Token
- 3. 写入数据
- 4. 查询数据
docker run -d --name iedb -p 8000:8000 -v iedb-data:/app/data ghcr.io/mengdal/iedb:latest
docker logs iedb 2>&1 | grep -i "admin"
import msgpack
import requests
data = {
"m": "cpu",
"columns": {
"time": [int(datetime.now().timestamp() * 1000)],
"host": ["server01"],
"usage_idle": [95.0],
"usage_user": [3.2],
}
}
requests.post(
"http://localhost:8000/api/v1/write/msgpack",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/msgpack"},
data=msgpack.packb(data),
)
curl -X POST http://localhost:8000/api/v1/query \
-H "Authorization: Bearer $TOKEN" \
-d '{"sql": "SELECT * FROM default.cpu LIMIT 10", "format": "json"}'
完整安装指南请参阅 快速上手。
架构
- 写入链路
- 查询链路
- 周边服务
Client ──► HTTP Handler ──► WAL ──► ArrowBuffer ──► flushWorker ──► Parquet ──► Storage
MsgPack/LP/TLE (可选) 内存列式缓冲 按小时排序 Snappy/Zstd local / S3
解码 & 校验 (db/meas 分片) ArrowWriter / MinIO / Azure
Client ──► QueryHandler ──► SQL Transform ──► DuckDB ──► Arrow ──► JSON / Arrow IPC ──► Client
auth / RBAC FROM cpu → httpfs RecordReader 2x 快于 JSON
governance read_parquet() extension
MQTT Broker ──► Subscriber ──► ArrowBuffer ─► (写入链路)
Compaction ──► Parquet 合并 (每小时/每天)
Retention ──► 自动清理过期数据
CQ ──► 定时连续查询
Tiering ──► 热→冷数据分层迁移
WAL ──► 崩溃恢复 / 日志清理
IEDB 计算与存储分离,可独立扩展。数据以 Parquet 存在对象存储,由 DuckDB 列式引擎直接查询,结果通过 Apache Arrow 返回,无缝对接 Pandas、Polars 等。
主要特点
| 特性 | 说明 |
|---|---|
| 极致性能 | 1800 万条/秒写入,600 万行/秒查询,p99 延迟低于 10ms |
| 标准 SQL | 完整支持窗口函数、CTE、JOIN,DuckDB 引擎驱动 |
| 灵活存储 | 本地 / MinIO / S3 / Azure Blob,Parquet 开源格式 |
| 多数据库 | 按环境、租户或应用隔离,独立管理 |
| 自动压缩 | 小时/天分层合并,查询提速 10-50 倍 |
| WAL 预写日志 | 可选开启,零数据丢失 |
| 数据生命周期 | 保留策略 + 连续查询 + 分层存储 |
| MQTT 集成 | 直连 MQTT Broker,设备数据实时入库 |
| Arrow 列式查询 | 返回 Apache Arrow IPC 流,2x 快于 JSON |
| 原生 TLS | 内置 HTTPS,无需反向代理 |
| Prometheus 指标 | 内建 Prometheus metrics + 结构化日志 |
应用场景
- 物联网与工业
- 产品分析
- 可观测性与日志
传感器遥测、设备状态、产线监控——窗口函数 + 异常检测。
SELECT device_id, AVG(temperature) OVER (
PARTITION BY device_id ORDER BY timestamp
ROWS BETWEEN 10 PRECEDING AND CURRENT ROW
) as moving_avg, MAX(pressure) as peak, STDDEV(vibration) as variance
FROM data.iot_sensors
WHERE timestamp > NOW() - INTERVAL '24 hours'
GROUP BY device_id, facility_name, timestamp
HAVING MAX(pressure) > 850 OR STDDEV(vibration) > 2.5;
用户行为事件、转化漏斗、会话分析——数十亿级数据亚秒查询。
SELECT time_bucket(INTERVAL '1 hour', time) AS bucket, page_url,
COUNT(DISTINCT session_id) AS sessions, COUNT(*) AS views
FROM data.page_views
WHERE time > NOW() - INTERVAL '24 hours'
GROUP BY bucket, page_url ORDER BY views DESC;
分布式系统指标、日志与 trace——高速写入 + 实时告警查询。
SELECT time_bucket(INTERVAL '5 minutes', time) AS bucket,
service_name, level, COUNT(*) AS cnt
FROM data.app_logs
WHERE time > NOW() - INTERVAL '1 hour' AND level IN ('ERROR', 'WARN')
GROUP BY bucket, service_name, level ORDER BY cnt DESC;
性能
| 指标 | 数值 |
|---|---|
| 写入吞吐 | 1800 万条/秒(MessagePack 列式) |
| 查询吞吐 | 600 万行/秒以上 |
| 写入延迟 (p99) | < 10ms |
| 分析查询延迟 | < 1s |
| 压缩率 | 10x-100x(vs JSON,Parquet 列式) |
ClickBench
| 数据集(14GB Parquet,1 亿行) | 冷启动 | 热身 |
|---|---|---|
| 共执行 43 条 SQL | 120.25s | 35.70s |
IEDB 分析性能 比 QuestDB 快 1.80 倍,比 TimescaleDB 快 9.39 倍。
企业功能
需要集群、RBAC、分层存储、审计日志?
→ 查看 企业功能 了解完整企业特性与配置示例。
后续步骤
- 快速上手 — 5 分钟安装运行
- API 参考 — 完整 REST API 文档
- 数据导入 — CSV / Parquet / Line Protocol 批量导入
- 配置指南 — 存储、认证、压缩、保留策略
- 集成指南 — MQTT / Telegraf / Grafana
支持
- 邮箱:support@lmgateway.com / sales@lmgateway.com
- 咨询:+86 180 4904 0679
- 商务:+86 180 5592 6204
- 官网:www.lmgateway.com