时序数据库(TSDB)是一种特殊类型的数据库,主要用于存储时序数据。随着5G技术的不断成熟(工信部部长十九大透露力争2020年实现5G全球首发),物联网技术将使一切互联。在物联网时代之前,只有手机和电脑才能上网。未来,所有设备都将连接到互联网。这些设备每时每刻都会吐出大量按时间组织的数据,需要存储起来以供查询、统计和分析。时间序列数据在各个方面都与普通的业务数据有很大的不同。本文将尝试带你进入TSDB的世界。TSDB应用场景:TSDB会用在哪些场景?TSDB目前最好的应用场景是监控业务(哨兵)。以Sentry为例,Sentry会在业务服务器上部署各种脚本客户端,收集服务器指标数据(IO指标、CPU指标、带宽内存指标等)、业务相关数据(方法调用异常数、响应延迟、JVMGC相关的数据等),数据库相关的数据(读延迟,写延迟等),很明显,这些数据是与时间序列相关的,客户端收集后会发送给Sentinel服务器,而Sentinel服务器将存储数据并提供页面供用户查询。如下图所示,用户可以登录Sentinel系统查看某台服务器的负载情况。负载曲线是按时间绘制的,时序特征明显:其实TSDB的潜力还没有爆发,至少现在还没有。在可预见的未来3到5年内,随着物联网和工业4.0的到来,所有设备都将携带传感器并接入互联网。传感器采集的时间序列数据,将非常依赖TSDB的实时分析能力、存储能力和查询统计能力。上图是智能工厂的示意图。工厂内的所有设备都会带有传感装置。这些传感设备会实时采集设备温度、压力等基础信息,并发送到服务器进行实时分析、存储,以及后期查询统计。另外,比如现在比较流行的各种可穿戴设备,未来都可以接入互联网,在可穿戴设备上收集的心跳信息、血流信息、体感信息等也将传输到服务器实时进行实时分析、存储和查询统计。.TSDB数据示例:什么是时序数据?介绍完TSDB的主要应用场景,接下来我们就来看看时序数据是一种什么样的数据。下图是一个典型的时序数据:整个图代表了广告业务的实时行为数据,包括广告的实时浏览量、实时点击量、实时利润收入。图中有三个区域,表示时序数据由三部分组成,分别是维度列、值列和时间列。维度栏是最左边的部分,代表了广告的基本信息,类似于对象标签,比如广告平台、广告主、广告面向对象、广告面向国家等。价值列是中间部分,表示收集的价值包括展示次数、点击次数和收入。时间栏是一系列的时间点信息。将上图转化为表结构就相当于:TSDB的基本特点:时序业务有什么特点?时序业务与普通业务在很多方面存在着巨大的差异。总结起来主要有以下几个方面:海量数据不断产生,没有波峰波谷。举几个简单的例子,比如像Sentinel这样的监控系统,如果系统监控1w台服务器的各种指标,每台服务器每秒采集100个metrics,那么每秒就有100w个TPS。再比如,如果有100万人佩戴比较流行的运动手环,每个手环每秒只采集3种指标(心跳、脉搏、步数),同样会产生每秒300w的TPS。数据都是insert操作,基本没有update和delete操作。时序业务产生的数据很少有更新和删除操作。基于这个事实,时序数据库架构的设计将大大简化。最近比较关注数据,以后会比较关注流处理。旧数据很少被访问,甚至可以被丢弃。这很容易理解。我们平时最关心哨兵系统最近一个小时的数据,最多看最近3天的数据,很少看3天前的数据。随着流计算的到来,时序数据在未来的发展中必然会更加关注实时数据的价值,而这部分数据的价值无疑是最高的。数据产生后,可以按照一定的规则发出告警,这是一个很常见也很重要的场景。告警时效性越高,对业务越有利。数据中存在多个维度的标签,往往需要进行多维联合查询和统计查询。时序数据还有一个很重要的功能就是多维聚合统计查询。例如,业务需要计算最近一小时美国地区广告商谷歌发布的广告的点击率和总收入。这是一个典型的多维聚合统计查询。需要。这种需求通常对有效性要求不高,但对查询聚合性能有比较高的要求。TSDB市场发展:目前有哪些TSDB产品?在过去的一年里,随着物联网技术的不断成熟,很多创业者都希望借此机会获得更多的创业机会。试想一下,在移动互联网刚兴起的时候,也诞生了一批有规模的创业者。现在,移动互联网创业难度很大。基本上可以认为,移动互联网创业就是玩资本,玩资本。教父。但是,物联网市场的竞争力还很小,很纯粹,创业的机会也很多。看清这一事实,不少厂商,尤其是公有云厂商,纷纷将目光投向了这一领域。他们的目标是拉拢这些小型初创公司,包括百度云、Facebook、阿里云和华为云。他们都开发并提供了TSDBService,希望利用背后的创业热情,把云计算普及到这些小公司(云计算最大的客户是小创业公司,所以对于云计算来说,小的越多越好)企业赢得世界)。下图展示了过去一年各厂商在TSDB中的动作。可见大动作是有预见性的:TSDB核心特性:TSDB关注的核心技术点在哪里?说了这么多,我们应该看看TSDB在技术层面上有哪些核心点需要重点关注?基于时序服务的基本特性,TSDB需要重点关注的技术点如下:1.高吞吐写入能力。这是为时序业务持续产生海量数据量身定做的。目前,要实现系统的高吞吐量写入,必须满足两个基本的技术要求:系统具有水平扩展能力和单机LSM架构。很容易理解系统具有横向扩展性。单机无法支持。系统必须是集群化的,并且必须易于添加节点进行扩展。毕竟扩张的时候对业务不敏感。目前的Hadoop生态系统基本上可以做到这一点;而LSM架构是为了保证单机的高吞吐写入,LSM结构下的数据写入只需要写入内存,另外写入日志,这样就不需要再随机写入数据了。结构目前被HBase、Kudu、Druid等对写性能有要求的系统使用。2.数据分层存储/TTL。这是针对时间序列数据的冷热特性量身定制的技术特性。分层数据存储要求能够将最新的小时级数据存储在内存中,将最新的天级数据存储在SSD中,将较旧的数据存储在更便宜的HDD中或者直接使用TTL过期来淘汰它们。3.压缩率高。提供高压缩率有两个考虑因素。一是节省成本。很容易理解,将1T的数据压缩到100G,可以减少900G的硬盘开销,这对业务来说是非常有诱惑力的。另一个方面是压缩后的数据可以更容易地存储在内存中。比如最近3个小时的数据是1T,而我只有100G的内存。如果不压缩,将有900G的数据强行放在硬盘上。这样的话,查询开销会非常大,使用压缩将1T数据全部放到内存中,查询性能会非常好。4、多维查询能力。时序数据通常有多个维度的标签来描述一条数据,也就是上面说的维度列。如何高效地根据几个随机维度进行查询是一个必须要解决的问题。这个问题通常需要考虑位图索引或者倒排索引技术。5、高效的聚合能力。时间序列服务的一个常见需求是查询聚合统计报告。比如在Sentinel系统中,需要查看某个接口最近一天异常的总次数,或者某个接口的耗时执行时间。这种聚合其实就是简单的count和max。问题是如何在如此庞大的数据量的基础上高效查询和聚合符合条件的原始数据。您必须知道,由于长时间不在内存中,统计信息的原始值可能已过时,因此这可能是一个非常耗时的操作。目前业界比较成熟的方案是采用预聚合,即在数据写入时完成基本的聚合操作。6、未来技术点:异常实时检测、未来预测等。TSDB总结TSDB在未来将是一个非常有市场和挑战性的数据库。虽然现在已经有了这样那样的服务,但是大部分都有这样那样的问题。现在很难谈成熟了。TSDB要想在物联网和工业4.0时代占据一定的地位,是一项必须拓展的技术。本文从时序场景、时序业务特点、TSDB市场、TSDB核心技术点等方面对TSDB进行了介绍。我希望你能对TSDB有一个基本的了解。未来,笔者将推出TSDB系列专题文章,深入分析TSDB自身所面临的各种技术问题和解决方案。
