欢迎页
AI - Powered 高性能分析型数据库 - IotEdgeDB
IotEdgeDB 是基于 DuckDB 和 Parquet 构建的高性能分析型数据库,并提供灵活的存储后端。它可用于分析、可观测性、人工智能/机器学习、物联网和日志管理。数据写入速度超过 1800 万条/秒,查询速度超过 600 万行/秒。采用单个 Go 二进制文件编写。原生支持 S3 对象存储,开源存储格式。以下简称IEDB。
主要特点
- 极致性能:每秒写入超过 1800 万条记录(MessagePack 列式)
- 高速分析查询:由 DuckDB 提供引擎支持,并完全支持 SQL(每秒 600 万行以上)
- 灵活存储:本地文件系统、MinIO、S3 对象存储
- 多数据库架构:可按环境、租户或应用组织数据
- 自动压缩:分层(每小时/每天)文件合并,查询速度提升 10-50 倍
- 可选的预写式日志 (WAL):实现零数据丢失
- 数据生命周期:保留策略、持续查询、符合信息安全的删除
- 生产监控:Prometheus 指标、结构化日志
- MQTT 集成:直接订阅 MQTT 代理以接收流数据
- 批量导入:支持自动分区的 CSV 和 Parquet 文件导入
- 原生 TLS/HTTPS:内置 TLS 支持,无需反向代理
为什么选择 IEDB?
问题:现代数据工作负载正在以前所未有的规模产生海量数据:
- 产品分析:来自用户交互、转化路径和会话行为的数十亿级事件数据
- 可观测性:分布式系统产生的指标、日志与调用追踪
- AI/ML:特征数据、训练数据以及模型推理日志
- 物联网与工业:来自工厂、车辆及基础设施的传感器遥测数据
- 日志管理:应用运行日志、安全事件与审计记录
传统数据库已经无法满足需求。它们速度慢、成本高,而且会将数据锁定在专有格式中。
IEDB 解决了这个问题:每秒写入 1800 万条以上的记录,对数十亿行进行亚秒级查询,以及采用标准 Parquet 文件格式,数据完全由用户掌控,可自由迁移与长期保存
- 分析
SELECT
time_bucket(INTERVAL '1 hour', time) AS bucket,
page_url,
COUNT(DISTINCT session_id) AS unique_sessions,
COUNT(*) AS page_views,
AVG(time_on_page_ms) AS avg_time_on_page,
SUM(CASE WHEN converted THEN 1 ELSE 0 END)::FLOAT / COUNT(*) AS conversion_rate
FROM data.page_views
WHERE time > NOW() - INTERVAL '24 hours'
GROUP BY bucket, page_url
ORDER BY page_views DESC;
- 日志
SELECT
time_bucket(INTERVAL '5 minutes', time) AS bucket,
service_name,
level,
COUNT(*) AS log_count,
COUNT(*) FILTER (WHERE level = 'ERROR') AS error_count,
COUNT(DISTINCT trace_id) AS affected_traces
FROM data.app_logs
WHERE time > NOW() - INTERVAL '1 hour'
AND level IN ('ERROR', 'WARN')
GROUP BY bucket, service_name, level
ORDER BY error_count DESC;
- 物联网
SELECT
device_id,
facility_name,
AVG(temperature) OVER (
PARTITION BY device_id
ORDER BY timestamp
ROWS BETWEEN 10 PRECEDING AND CURRENT ROW
) as temp_moving_avg,
MAX(pressure) as peak_pressure,
STDDEV(vibration) as vibration_variance
FROM data.iot_sensors
WHERE timestamp > NOW() - INTERVAL '24 hours'
AND facility_id IN ('mining_site_42', 'plant_7')
GROUP BY device_id, facility_name, timestamp
HAVING MAX(pressure) > 850 OR STDDEV(vibration) > 2.5;
标准 DuckDB SQL。支持窗口函数、CTE 和连接。不使用专有查询语言。
快速示例
import msgpack
import requests
from datetime import datetime
# COLUMNAR FORMAT (RECOMMENDED)
# All data organized as columns (arrays), not rows
data = {
"m": "cpu", # measurement name
"columns": { # columnar data structure
"time": [
int(datetime.now().timestamp() * 1000),
int(datetime.now().timestamp() * 1000) + 1000,
int(datetime.now().timestamp() * 1000) + 2000
],
"host": ["server01", "server02", "server03"],
"region": ["us-east", "us-west", "eu-central"],
"datacenter": ["aws", "gcp", "azure"],
"usage_idle": [95.0, 85.0, 92.0],
"usage_user": [3.2, 10.5, 5.8],
"usage_system": [1.8, 4.5, 2.2]
}
}
# Send columnar data (18M+ records/sec throughput)
response = requests.post(
"http://localhost:8000/api/v1/write/msgpack",
headers={
"Authorization": "Bearer $IEDB_TOKEN",
"Content-Type": "application/msgpack",
"x-iedb-database": "default" # Optional: specify database
},
data=msgpack.packb(data)
)
# Check response (returns 204 No Content on success)
if response.status_code == 204:
print(f"Successfully wrote {len(data['columns']['time'])} records!")
else:
print(f"Error {response.status_code}: {response.text}")
# Query data
response = requests.post(
"http://localhost:8000/api/v1/query",
headers={"Authorization": "Bearer $TOKEN"},
json={"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 ──► MQTT Subscriber ──► ArrowBuffer ─► (进入写入链路)
Compaction Scheduler ──► 合并小 Parquet 为大文件(每小时/每天)
Retention Scheduler ──► 按策略自动清理过期数据
CQ Scheduler ──► 定时执行连续查询
Tiering Scheduler ──► 热数据(本地) → 冷数据(S3/Azure) 分层迁移
WAL Maintenance ──► 清理过期 WAL / 崩溃恢复回放
IEDB 将计算和存储分离,允许您独立扩展它们。数据以 Parquet 文件的形式存储在对象存储上,并由 DuckDB 高效的列式查询引擎直接查询。查询结果通过 Apache Arrow 列式格式高效返回,无缝对接 Pandas、Polars 等数据分析工具。
性能
- 数据写入速度:1800 万条记录/秒(列式 MessagePack 格式)
- 查询吞吐量:600万行/秒以上
- 写入延迟:低于 10 毫秒 p99
- 查询延迟:分析查询延迟低于一秒
- 压缩率:10倍至100倍(与JSON(Parquet列式格式)相比)
ClickBench 测试结果
- 冷启动:耗时 120.25 秒,共执行 43 个查询
- 热身运行:耗时 35.70 秒,共执行 43 个查询
- 数据集:1亿行,14GB Parquet格式
在分析工作负载方面, IEDB 的速度比 QuestDB 快 1.80 倍,比 TimescaleDB 快 9.39 倍。
企业功能
需要集群、基于角色的访问控制 (RBAC)、分层存储、审计日志或自动调度 ?我们为 IotEdgeDB 扩展了生产级功能,以增强可扩展性、安全性和合规性。
后续步骤
- 入门指南- 5 分钟内安装并运行
- 安装指南- Docker、原生软件包和源代码
- IEDB 企业版 - 面向大规模生产的企业级功能
- IoT产品方案提供商- 访问官网了解并联系我们
支持
邮箱:
support@lmgateway.com
sales@lmgateway.com
咨询:+86 180 4904 0679
商务:+86 180 5592 6204
产品:+86 180 5590 8530
地址:安徽省黄山市经济开发区梅林大道59号未来科技城2号研发楼二层