时序数据库简介

1. 前言

可能很多人都没有听过时序数据库(time series database), 其实,已经存在很多不同的数据数据库, 通过DB-ENGINES 网站排名, 可以看到很多时序数据库。 而究竟什么是时序数据库, 时序数据带来的好处是什么? 让我们一探究竟。

2. 内容概要

在这里, 我将从以下几点讲述本次的主题。

  1. 物联网数据之mysql
  2. 时序数据库简介
  3. 时序数据库的应用场景及示例

在企业中, mysql 应该是最受欢迎的数据存储介质之一,作为千万级数据存储的关系数据库能够适合绝大多数应用场景, 简单的sql, 关联查询,事务支持,丰富的类型等 使得其成为数据持久的利器。

而不得不说, 在物联网的行业中, 数据的存储也是尤为关键,下面就来谈谈物联网的数据存储。

3. 物联网数据之mysql

物联网的数据主要是通过传感器采集的数据, 经过解析, 清洗, 以结构化的格式进行存储, 但是数据中有一个特点, 那就是每条数据都会带一个时间戳, 代表数据被采集的时间。

3.1 数据查询

假设数据的格式是这样的:

a   b   value1    time1
a   b   value2    time2
a   c   value3    time3

对于我们要筛选某段时间很容易写出下列sql:

 select * from table where time between  A and B [and other filter condition ]

如果我们要查询离某个时间点后最近的一条,可能会写出如下sql:

select * from table where time > A  [ and other filter condition ] limit 0,1  

可是这么写可能是有问题, 这样默认是根据id进行排序, 而不是时间进行排序, 所以正确的应该是:
比如当间隔为1年时取每天的平均值作为一个样点, 我们发现可能会这样写

select * from table where time > A  [ and other filter condition ] order by time asc limit 0,1  

在不考虑性能的情况下, 用mysql似乎能满足我们大部分的需求。

3.2 数据可视化

考虑下面一种情况: 假设我们筛选某段时间的间隔很长, 可能几个月, 可能一年,并且, 我们想要将这些点以时间为主轴进行展示, 那么我们可能看到的将会是下面的效果:

密集的数据点

可以看到, 点是相当密集的, 可视化程度比较差,有时甚至无法从展示的图中获取任何可用的价值, 同时如果是网页显示, 渲染数十万的点可能导致游览器很卡, 很影响交互体验。

这时候我们会想, 如何用sql 来降精度, 比如当间隔为1年时取每天的平均值作为一个样点, 我们发现可能会这样写

 select avg(value), time from table where time between A and B [ and other filter condition ] group by date_format(time, '%m-%d-%Y') order by time asc

按照每天的可能好写, 可是按照每小时的该怎么写呢, 以及其他的呢, 我们会发现sql可能已经满足不了我们的要求了。

3.3 性能

除此之外, 我们之前一直未考虑一个问题: ==性能==

物联网,时时刻刻在产生数据, 如果是传感器, 可能频率短的几秒中, 长的也可能只有数分钟, 这只是1个传感器, 在大量的传感器短时间的会上传大量数据, 久而久之, 这个数据库会有上百万甚至上千万的的数据, 并且历史的数据有其存在的价值。如未来大数据的离线分析。

如果此时我们再通过这些sql,甚至使用order by, 在长时间的查询下, 一条sql可能会相应数秒中甚至数分钟才能相应出来。

因为对于mysql, 数据之间并没有时间上的概念, 一条记录就是一个点。 对于其要从时间上筛选出点来, 使得查询效率上不尽如意。

添加索引:
我们发现,时间是一个必加的索引。 而根据哪些条件筛选, 每个字段都有可能成为筛选条件, 这时候, 我们会对除主键意外的字段都加索引, 也就是一个除主键以外的其他字段的联合索引。但索引的建立, 就会影响插入的性能。

总的来说, 对于这些在时间序列的点, 使用mysql 总是有些要求满足不了,那么有什么更好的存储介质呢?

时序数据库

时序数据库仿佛就是为物联网诞生的一件利器, 目前使用的越来越广泛, 可以从这个网站看到各种时序数据库及排名

4. 时序数据库

4.1 什么是时序数据库&应用场景

顾名思义, 就是存储与时间相关的数据,该数据是在时间上分布的一系列值。
例如股票价格, 随时间的温度变化等等。 而在物联网中, 数据网网是以时间维度度量的。 除了时间和值这个维度, 携带的还可能有其他部分, 比如温度测量可能会携带是哪里的温度等等,因为不同的地方的温度或者由不同温度计采集上来的点没有直接的关联。

4.2 时间序列处理

在对时间序列的数据有些操作是比较特别的, 在传统数据库可能是不存在的, 或者很难去实现

4.2.1 降精度

时序数据在可视化上一般是一些点连成的线, 当时间越长, 能够取出的点越多,当我们取1年的时间甚至更长, 需要把精度降到一天或者一周,我们只选这一天或一周中的最大值或者最小值或者平均值作为这一天或一周的气温。 用算法或者把时序数据转换成精度比较低的时间序列以便于观察和理解它,这是在传统数据库里没有的一种方式。

插值

比如说中间丢失了一个点,比较简单的方法是中间插一个值,常用的方法是线性插值,就是在时间轴上画一个直线中间的点就插出来了。

其他操作

聚合
将多个点通过一定的算法得到一个值, 比如count, distinct, mean等函数。

4.3 时序数据库的好处

任何事物的诞生必定有其要解决的问题, 而时序数据库的产生也一定是为了解决一些问题。

4.3.1 存储空间

往往在时序数据库的设计上, 对于数据的存储进行了优化, 如何优化在这里不考虑

4.3.2 入库和查询

由于大量的传感器采集的大量设备在源源不断的到来,传统数据库对于大量的随机数据实时写入的性能是欠佳的(入库速度不够), 而在插入的同时进行读写的效率将大打折扣。

当然不同的时序数据库所针对的问题也可能不一样。下面来看一下实实在在的例子。

4.4 运用时序数据库的例子

在一些应用场景中,其实已经运用了时序数据库

  1. aliyun 监控
    以下是阿里云服务器监控的CPU截图展示


    1小时区间.png

    1天区间.png

我们可以看到, 在短时间的范围内, 数据点以每整分显示, 在长时间的范围内(大于1天), 数据点以每10分钟及每1小时进行显示。

而阿里云上也推出了相应的时序数据库产品: HiTSDB

相信大家对时序数据库有了一定的认识, 在后续我会就我应用的Opentsdb时序数据库进行分享。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容