大家好。 监控系统大家应该都用过,而监控里面记录的比较重要的数据就是某个时间点发生了什么,而用来存储这些数据的数据库,用专业术语讲就是时间序列数据库(TimeSeriesDatabase,缩写简称TSDB)。以下是一个更官方的解释: 时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。是新型的非关系型数据库,在大数据时代有着十分重要的意义。 Prometheus、InfluxDB、M3、TimescaleDB都是时下流行的TSDB。时序数据的压缩算法很大程度上决定了TSDB的性能,以上几个项目的实现都参考了Facebook2015年发表的论文《Gorilla:Afast,scalable,inmemorytimeseriesdatabase》中提到的差值算法。 今天要推荐的开源项目mandodb是一个最小化的TSDB实现,从概念上来讲它还算不上是一个完整的TSDB,因为它:没有实现自己的查询引擎(实现难度大)缺少磁盘归档文件Compact操作(天气好的话会实现)没有WAL作为灾备保证高可用(心情好的话会实现) 但是mandodb的意图是希望完整介绍如何从零开始实现一个小型的TSDB,希望能给大家带来更多的启发。 mandodb使用Go实现,同时作者也针对mandodb提供了如下详尽的用法介绍、设计方案介绍等,其中还包含了对差值算法的讲解,是非常不错的学习资料呢。 开源作者的整体文档行文非常的风趣幽默,同时细节讲解也非常的详细,如果你对时间序列数据库感兴趣,推荐你了解一下这个项目,Star一波绝对不亏。 更多项目详情请查看如下链接。 开源项目地址:https:github。comchenjiandongxmandodb