时序数据库笔记

目录

1.时序数据库是什么

TSDB(Time series database)简单的说就是专门为时序数据做存储和索引优化的数据库引擎。 根据DB-Engines Ranking的用户关注度变化趋势图,最近24个月的用户关注增长最快的就是TSDB。在这里插入图片描述先来介绍什么是时序数据。时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

2.典型场景

2.1 服务监控&报警

在这里插入图片描述

2.2 车联网、工业互联网等IOT场景

在这里插入图片描述百度无人车在运行时需要监控各种状态,包括坐标,速度,方向,温度,湿度等等,并且需要把每时每刻监控的数据记录下来,用来做大数据分析。每辆车每天就会采集将近8T的数据。

2.3 股票交易等实时数据分析

在这里插入图片描述

3.TSDB的挑战&解决办法

3.1 TSDB挑战&特点

  1. 数据按照时间纬度抵达
  2. 写入接入点多、数据写入频繁
  3. 写入量远大于读取,(90%)写入
  4. 90%以上功能只关注近1天的数据
  5. 允许少量数据丢失

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

附录阅读

1.DB-Engines排名数据地址 

2.DB-Engines的排名数据从哪里来 

3.五分钟带你看懂时序数据库 

4.FaceBook Gorilla 

5.时序数据模型 

6.百度INF的一些公众号文章 

7.阿里巴巴双十实时监控系统技术揭秘.pdf

 

这篇笔记没有做很多细节上的修正,可能是比较口语化的,欢迎一起交流。

下面是公众号的版本: https://mp.weixin.qq.com/s/G2PjsVV3Y8tYPt0Kn9s1GA  

当然也欢迎扫码关注我的号:在这里插入图片描述

版权声明:本文为zhaoyixing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhaoyixing/p/12330897.html