实时数据库:一夜之间,我感受到了时序数据库的威胁
副标题[/!--empirenews.page--]
进入正题之前,咱们先讲个故事 在2018年接触到工业互联网之前,我完全没了解过时序数据库(下面简称为TSDB),因为做标准的原因开始慢慢接触起国内一些做TSDB的厂家,其中不乏充满干劲的创业公司和经验丰厚的老牌信息化厂商,实力雄厚的BATH天团在TSDB上也都有布局,突然间各种TSDB产品就像雨后春笋一般涌现了。 它是什么时候开始火的? 其实从2016年开始就有了这个趋势,引用一下DB-Engines上发布的一张图,在2016年12个月里,TSDB的人气上涨了26%,是排名第二的图数据库的两倍还多。 DB-Engines:https://db-engines.com/en/blog_post/62 2016年度各类数据库人气涨势 再挑其中排名第一的InfluxDB在Google Trends里查一下热度,这个数据库是2013年7月左右发布的第一个版本,自此以后人气涨势是一发不可收拾。 2013-2019年InfluxDB的搜索热度变化 所以我们加紧了学习步伐,希望能尽快的把标准梳理出来,好让企业伙伴在做技术选型的时候能有些参考。 “这个数据库我们十几年前就开始做了,但是叫另一个名字——实时数据库”。 很多做工业信息化起家的兄弟和我们提到了“实时数据库”这个概念,并表示“我们功能其实是一样的”。这让我有些困惑,很是想搞明白这两个数据库之间的关系,能算成一类吗?但当时网上对于这两种数据库的对比,大概只能找到CSDN的一篇《工业大数据漫谈12:实时数据库与时序数据库》(https://blog.csdn.net/guanhui1997/article/details/72840769),讲的很清晰,如果你也有同样的困惑可以点进去看一看~但也可以看我接下去要写的,因为我们拉着做实时/时序数据库的伙伴们针对这个问题讨论了好几回。 所以这一篇文章是一些学习心得,会尽量包括:这两个数据库的产生背景、具体区别和一些小趋势。 先来点概念做铺垫~ 时序数据 time series data 基于稳定频率或非固定周期频率持续产生的一系列基于时间维度的指标监测数据。由时间戳、标签和指标三要素组成。 时序数据库 time series database 用于保存海量时序数据的数据库。 我们可能是异父异母的亲兄妹? 实时数据库诞生于传统工业,早在几十年前就已经开始发展,技术已经很成熟,主要为了支持工业场景中大量测量数据的快速写入、存储和查询,有时会涉及到实时的反馈控制。 而时序数据库诞生于互联网,兴起于物联网,主要为了支持海量网络监控及传感器数据的快速写入和分析需求。 我们来看下为什么工业场景中要专门设计实时数据库,工业场景中超过80%的数据都有这样的一些特征:都带有时间戳,且是按时间顺序生成的;大多为结构化数据;采集频率高,数据量大。以一个中等规模的工业企业为例,在流程监控的环节中,可能会涉及到5-10万个传感器测点,每天产出的数据量能达到上百GB,通常情况下,工业企业都会要求数据能够长时间被存储,这样可以随时查询到历史趋势。这个简单的需求已经显示出了传统的实时数据库需要具备的一些能力,可以总结为以下几点: 高速写入的能力:工业实时数据库通常会对写入的速度有很高的要求。以流程工业的场景为例,每个环节都会设置传感器,每个传感器的采集频率都很高,所以写入的并发量会特别大,有时甚至会要求每秒上百万的测点。所以除了对软件的要求之外,也会选用一些高性能的服务器。 快速查询的能力:查询的需求分为两块,一是要响应实时的查询请求,用于及时反映系统的状态;二是历史数据也要能快速被查询,由于历史数据的量非常大,在查询时需要对特定时间段的数据做聚合,需要做到即使是查一整年的数据情况,也能很快的反应出来。 超强数据压缩能力:上面提到监控数据会被存储很长时间,5年甚至是10年都是常有的事,在存储容量有限的情况下,就需要对数据做一定的压缩,通常压缩方式会分成无损压缩和有损压缩,相比而言,有损压缩的压缩比会更大一些,有时甚至会达到1:30-40,这就需要设计合理的算法来保留数据中的细节,使数据在还原后仍能保留重要的特征。 积累丰富的工具:传统的实时数据库的解决方案一般是从采集开始到直可视化的一整套系统,有多年积累形成的丰富的工具包,比如会积攒上百种的协议,或者各种场景的数据模型,这些都是工业软件的重要竞争力。 追求极致稳定:工业上对软件的稳定性要求特别高,除了用主备来保证高可用外,完全由软件的质量来保证程序的持续运行,工程师会自豪地拍胸脯保证软件跑十年也不会出错。 我们再来看一下时序数据库的诞生环境,在进入互联网飞速发展的时期之后,随着通信技术的革新,数据通信成本的下降,掀起了一波又一波万物互联的热潮。不仅是互联网监控需要采集数据,人们每天接触的手机、智能手环、共享自行车、汽车,都在源源不断地产生数据。人们实时地收集这些数据并发送到云端,用大数据技术进行分析,对业务进行监控和预测,以数据驱动企业降本增效,提高服务质量。 仔细观察一下互联网场景中的数据特征,其实和工业领域大部分的实时数据类似: 1. 单条数据不会很长,但是数据量很大 2. 它们都带有时间戳,且按顺序生成 3. 数据大部分都是结构化的,用于描述某个参数在某个时间点的特征 4. 写入的频率会比查询的频率高很多 5. 已存储的数据很少有更新的需求 6. 用户会更关心一段时间的数据特征,而不是某一个时间点 7. 数据的查询分析大多基于某一个时间段或者某个数值范围 8. 需要进行统计和可视化的展示 从上面这些数据特征,可以很明显的看出来,虽然两种数据库产生的环境不同,但是面对的问题是相同的,解决的需求是类似的,所以两种数据库设计出的功能有很多重合的部分。 功能要求可参考CCSA大数据技术标准推进委员会(TC601)关于时序数据库的评估体系(http://databench.cn/evaluate?standard_id=5c07aec44b079) 这就好像两个从未谋过面的兄妹,确认过眼神就知道是一家人。 你想替代我吗?没那么容易 (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |