时序数据库笔记
目录
1.时序数据库是什么
TSDB(Time series database)简单的说就是专门为时序数据做存储和索引优化的数据库引擎。 根据DB-Engines Ranking的用户关注度变化趋势图,最近24个月的用户关注增长最快的就是TSDB。先来介绍什么是时序数据。时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。
时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。
2.典型场景
2.1 服务监控&报警
2.2 车联网、工业互联网等IOT场景
百度无人车在运行时需要监控各种状态,包括坐标,速度,方向,温度,湿度等等,并且需要把每时每刻监控的数据记录下来,用来做大数据分析。每辆车每天就会采集将近8T的数据。
2.3 股票交易等实时数据分析
3.TSDB的挑战&解决办法
3.1 TSDB挑战&特点
- 数据按照时间纬度抵达
- 写入接入点多、数据写入频繁
- 写入量远大于读取,(90%)写入
- 90%以上功能只关注近1天的数据
- 允许少量数据丢失
3.2 想象一个这样的案例
一个工业互联网的场景,厂区有10000个温度、湿度、光照等传感器,500ms上传一次数据。用于做整体的厂区生产环境检测、分析及预警。 主要产品就是可视化的实时数据展示、历史变化曲线、实时风险预警。 算一下几个数据,看看要投入多少
每秒上传速度 UPS = 10000 * 2次/ = 2w/s 每天上传的数据量 = 2w/s * 86400 * 50Byte(每次回传) = 80G / 天
接受服务先不考虑,现在都是无状态的可以加机器,当然也要考虑成本。今天我们讨论的是这些数据存在哪里
3.3 解决办法
现在的市面上的解决方案也很多、influxDB等开源产品。及百度云天工时序数据库、阿里也有自己的相应产品。 据我和从事这个研发的朋友沟通,国内的主体思想基本在附录facebook这篇论文的基础上做了改进或者改造。我的理解是其实就是: 数据压缩 + KV存储(分布式 + LSM存储) + tag倒排索引
3.3.1 数据压缩
百度云关于压缩的一篇文章 时间差值存储
数值XOR存储
3.3.2 KV存储(基于LSM + 分布式)
基于LSM模式的逻辑是先落内存、整块写入文件系统减少写入次数,提高写入速度 分布式解决数据存储扩展问题
Hbase/Cassandra 等
4.时序数据库的几个概念及案例分析
4.1 概念描述
metric:度量,类似表的概念,被测量的指标 data point: 每一条接入数据 timestamp: 时间 tag:被监控指标项的属性信息,比如北京的第123号传感器 field : 具体数值,cpu利用率等等
4.2 手动搭建一个监控系统
我使用influxdb,花了2个小时就完成了一个单机版本的监控系统搭建。 主要包含了collector + db + ui 三个部分 Telegraf+InfluxDB+Grafana
附录阅读
7.阿里巴巴双十实时监控系统技术揭秘.pdf
这篇笔记没有做很多细节上的修正,可能是比较口语化的,欢迎一起交流。
下面是公众号的版本: https://mp.weixin.qq.com/s/G2PjsVV3Y8tYPt0Kn9s1GA
当然也欢迎扫码关注我的号: