电话:400-650-6396  15652658866

  当前位置:   首页 > 资源中心 > 国产信创 > 【内核解析】自研时序数据库写入路径:从MemTable到SSTable的演变

【内核解析】自研时序数据库写入路径:从MemTable到SSTable的演变

  作者:监控易        来源:美信时代 发布时间:2026-06-02

核心要点摘要:时序数据写入性能是运维监控平台的基石。监控易自研时序数据库采用LSM-Tree架构,通过内存MemTable、预写日志(WAL)、磁盘SSTable等组件协同,实现高效的数据写入。本文解析数据从接收到持久化的完整路径,揭示其高性能背后的存储设计。

1.png

一、时序数据库的设计目标

监控易自研时序数据库专为运维监控场景设计,核心目标有三:

· 写入吞吐高:海量设备秒级上报,需要支撑持续高并发的数据点写入。

· 存储成本低:长期保存历史数据,需要具备较高的压缩效率。

· 查询响应快:时间范围查询和聚合分析需要在可接受的时间内完成。

传统关系型数据库使用B+树索引,写入时需要维护索引结构,随机I/O多,不适合时序数据。监控易时序数据库采用LSM-Tree(Log-Structured Merge-Tree)架构,将随机写转化为顺序写,有效提升写入性能。

 

二、写入路径全流程

第1步:数据接收与解析

采集器(TS)通过HTTP/gRPC协议将指标数据(时间戳、标签、值)批量发送到数据库接入层。接入层解析协议、校验合法性,并生成内部数据结构。

第2步:写入预写日志(WAL)

为保证数据不丢失,数据首先以追加方式写入磁盘上的WAL文件。WAL只做顺序写,性能较高。每条记录包含操作类型、系列标识、时间戳、值。WAL是恢复数据的最后防线——即使进程崩溃,重启后可重放WAL恢复未刷盘数据。

2.png

第3步:写入内存MemTable

数据同时写入内存中的MemTable。MemTable采用跳表或B+树实现,支持按Key有序存储。写入MemTable是纯内存操作,延迟极低。

第4步:MemTable刷盘

当MemTable大小达到阈值或时间间隔到达,后台线程将MemTable转换为不可变的Immutable MemTable,并异步写入磁盘生成SSTable文件。SSTable内部按Key有序存储,并包含索引块和数据块,支持快速查找。

第5步:SSTable合并

随着刷盘持续,磁盘上SSTable文件数量增多,查询时需要合并多个文件结果,性能下降。后台线程定期将多个小SSTable合并为一个大SSTable,并丢弃已删除或过期的数据。监控易采用分层合并策略,平衡写放大与读放大。

 

三、关键优化技术

1. 批量写入与异步刷盘

采集器批量聚合发送指标数据,数据库端也批量写入MemTable,减少锁竞争。WAL的同步策略可配置,平衡数据可靠性与写入性能。

3.png

2. 无锁MemTable

多线程并发写入MemTable时,监控易自研的跳表实现采用乐观锁结合版本号机制,读操作无锁,写操作仅在冲突时重试,在高并发场景下性能表现优异。

3. 数据分离存储

时序数据中的标签和数值分开存储。标签使用倒排索引维护系列标识的映射关系;数值按时间序列连续存储,提高压缩率。

4. 布隆过滤器加速

SSTable文件在打开时加载布隆过滤器,快速判断某个系列标识是否可能存在于该文件中,避免无谓的磁盘读取。

 

四、压缩算法与存储效率

监控易时序数据库对SSTable的数据块采用差分编码、位打包与Zstd组合压缩:

· 差分编码:相邻时间戳差值小,存储差值而非绝对值。

· 位打包:将多个小整数打包到固定位宽。

· Zstd:对数据块整体压缩,压缩比高、速度适中。

实测压缩效果显著。以大规模监控场景为例,原始数据经压缩后存储空间大幅缩减,有效降低存储硬件成本。

4.png

五、实际性能表现

监控易时序数据库在标准测试环境下展现出稳定可靠的性能。单节点写入吞吐可达较高水平,查询响应在毫秒级完成,能够稳定支撑大规模设备监控场景的数据处理需求。存储效率同样出色,压缩后存储空间占用远低于传统数据库方案。


六、技术演进与公司积累

监控易时序数据库自启动自研以来,历经多代重构:

· 早期阶段:基于成熟存储引擎,实现基础写入能力。

· 中期阶段:自研存储引擎,支持分布式集群,写入性能大幅提升。

· 当前阶段:无锁MemTable、分层合并、布隆过滤器等技术加持,写入性能持续提升,并针对信创环境优化了ARM64指令集。

公司始终专注于IT智能运维及数据可观测性领域。


七、客户实践:某部委全国性业务系统运维案例

某部委的全国性业务系统分布在全国多地,设备总量达数千台,涵盖服务器、网络设备、数据库、中间件等多种类型。传统监控方式难以应对如此大规模、分布式的运维需求。

监控易仅用少量监测服务器,构建了集中式私有云架构,配合自研高性能数据库,完成了对该部委全国性业务系统的全面监控。系统支持定制化报表开发,满足多样化的数据分析需求,在超大规模设备场景下保持高效、稳定的运行。

 

八、结语

时序数据库是监控易智能一体化运维平台的“数据心脏”。从MemTable的内存缓存到SSTable的磁盘持久化,从WAL的故障恢复到合并的空间回收,每一环节的精细设计共同构建了高性能、低成本、易扩展的存储底座。多年技术积累,让监控易在海量运维数据面前游刃有余。

 

FAQ

Q1:监控易时序数据库的写入性能是否受磁盘类型(HDD vs SSD)影响很大?
A:是的,尤其WAL和SSTable刷盘阶段对磁盘随机写性能敏感。生产环境强烈建议使用SSD。若必须使用HDD,可通过增大WAL缓存、降低刷盘频率等方式部分缓解,但整体写入吞吐会有所下降。

Q2:数据库的Compaction操作是否会导致查询延迟突然升高?
A:监控易采用分层Compaction策略,并限制单次Compaction的I/O带宽占用(可配置)。同时在业务低峰期自动调度Compaction,尽量避免对在线查询的影响。在典型生产环境中未观察到明显延迟抖动。

Q3:文章中的“自研”指的是完全从头开发,还是基于开源存储引擎修改?
A:监控易时序数据库的核心存储引擎(包括MemTable、SSTable格式、Compaction逻辑、WAL)均为完全自主研发,拥有多项发明专利。

 

#时序数据库 #LSM树 #写入性能 #数据压缩 #监控易智能一体化运维平台




内容责任声明:本文内容基于公开信创政策及实际项目经验编写,数据来源可追溯。

来源:监控易(北京美信时代科技有限公司)

作者:技术部 刘美玲

编辑:市场部 扬扬

初审:技术部 刘美玲

数据核实:技术部 刘美玲

终审:解决方案部 Dino

 


上一篇: 多数据中心运维如何实现跨地域统一管控又不失本地自治?

下一篇: 【交付能力】监控易15分钟快速部署:从安装包到大屏展示

监控易期待与各企业展开广泛合作!

电话:400-650-6396

手机:15652658866

QQ:3592185434

邮箱:contact@jiankongyi.com

在线客服系统