购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 InfluxDB的核心特性

得益于InfluxDB的设计理念,InfluxDB造就了如下特殊的核心特性。

1.5.1 内置REST接口

InfluxDB原生操作模式分为两种:一种是用户可以通过命令行的方式访问Influx服务,对其操作较为方便;另一种就是InfluxDB内置的REST接口,用户可以启动Influx服务,并连接到InfluxDB服务器进而执行操作。

InfluxDB API的一大特性就是可编程性强,而且编程语言较为友好,开发者可以快速上手。InfluxDB提供了一系列HTTP API供开发者调用,使用HTTP响应代码、HTTP身份验证,并以JSON格式返回响应。

InfluxDB提供的各种语言的HTTP API接口的封装可具体参考:https://docs.influxdata.com/influxdb/v2.0/api/。

1.5.2 数据Tag标记

Tag标记是InfluxDB的一个独特概念,其作用一般是为了创建索引,提高查询性能,是InfluxDB数据结构中记录元数据的键值对,在InfluxDB数据结构中属于可选部分,但它们对于存储常用查询的元数据很有用。

Tag标记一般存放的是标识数据点来源的属性信息,以代码清单1-1为例,其中host、monitor_name就是标签键,host对应的值是127.0.0.1,monitor_name对应的值是test1。

代码清单1-1

1.5.3 类SQL的查询语句

InfluxDB的另一大优点是拥有类似SQL的查询语言——InfluxQL,这使得使用传统SQL开发的从业人员能够快速上手,InfluxQL语言经过仔细设计,目前已发展得较为成熟。

下面以SELECT语句举例,在特定条件下从指定表名中查询相关数据。InfluxQL语句遵循SQL SELECT语句的形式:

SELECT <stuff> FROM <measurement_name> WHERE <some_conditions>

上述语句的参数解释如下:

● stuff:要查询的内容。

● measurement_name:表名,表示要从哪一张表中查询信息。

● some_conditions:条件约束,指定在该条件下查询内容。

InfluxQL还支持表达式的算术运算、正则表达式、SHOW语句、GROUP BY语句等,同时也支持SQL的大部分函数,如COUNT()、MIN()、MAX()等,有关InfluxDB函数的更多内容,读者可参考本书第5章。

1.5.4 高性能

时序数据库的一个重要特性就是高性能,这是支撑其处理大量数据的重要因素,决定了数据库在高写入高存储时的表现。InfluxDB在这方面表现得很优秀,在同类别的时序数据库中,InfluxDB的查询性能测试都领先于其他数据库数倍;在内置函数测试方面,其性能也是其他数据库的数倍。

要做到如此高性能,首先需要解决高写入吞吐量带来的问题,InfluxDB一开始选择了LevelDB作为存储引擎。然而,面对越来越多的时间序列数据的需求,InfluxDB遇到了一些无法克服的挑战。诸如LevelDB不支持热备份,对数据库进行安全备份需要关闭后才能复制;删除过期数据代价过高,等等。

后来InfluxDB采用自研的TSM(Time-Structured Merge Tree)作为存储引擎,其设计的核心思想就是牺牲部分功能来达到极致的性能。得益于自研的TSM存储引擎,InfluxDB有着极强的写入能力,它允许高吞吐量,压缩和实时查询同一数据。

1.5.5 开源

数据库产品属于基础软件,与操作系统的发展有同样的路径,属于头部垄断,就像奥运会的获奖模式,只有金银铜牌才会被客户认同。

实力弱小、市场份额占有率有限的企业,以开源切入是一种主流的商业模式,在时序数据库排行前十名中只有Kdb+和Fauna闭源。以非关系型数据库MongoDB为例,它于2007年成立,以开源、深耕社区、产品易用性极致体验为切入点,2012年左右,就成为非关系型数据库的标杆产品。这些年的开源使其积累了大量的用户,于2013年推出自己的商业化版本,用更好的工具、服务进行商业变现,例如推出数据托管服务、付费技术支持。以开源为切入点的关键在于,客户相信原厂是最了解开源数据库的服务企业,虽然其他服务器也可以为开源软件服务,但是比起开源软件的维护者来说,还是落了下风。

InfluxDB开源也是其受众广泛的原因之一,截至目前,InfluxDB在GitHub上已经有了2万多的star,足以见得其拥有良好的生态。不过目前只有单机版的InfluxDB开源,InfluxDB开发商为了维持后续稳定的开发费用,对集群版做了闭源,实行收费使用,走商业路线。 nC7KVjk9SaeA7iWuVC/a/Qvj2UFVeBIgsU0PO+p5g61rXT3HVWKYUc7NVAxIEkDb



1.6 时序数据库的应用场景

时序数据库经常应用于工业环境监控、物联网IoT设备采集存储、互联网业务、性能监控服务、自动驾驶等基于时间线且多源数据连续涌入数据平台的应用场景,InfluxDB专为时序数据存储而生,尤其是在工业领域的智能制造方面应用潜力巨大。

1.6.1 在工业环境监控中的应用

在工业领域,通常需要对实时产生的大量时序数据进行采集、处理、分析。处理这些数据,最重要的一点就是要做到实时,实时写入、实时查询,InfluxDB在这方面做得很好。

假若某公司有如下需求:由于工业要求,需要将生产过程中产生的工况数据采集起来做分析,公司一共有20个厂区,每个厂区有20000个采集点,要求500毫秒为一个采集周期,通过计算,每天的数据量高达700多万点,一年的数据量更是达到了26万亿点,假如每个数据点大小为50Byte,那么总的数据大小将达到1PB,如果每台服务器硬盘大小为10TB,那么总共需要100多台服务器。且这些数据不只要快速生成写入存储,还要支持快速查询,做可视化展示。

如此一来,传统关系型数据库便不能达到要求,而InfluxDB因特殊设计的存储结构,能够做到每秒钟支持上千万甚至上亿的数据写入和秒级的对上亿数据的分组聚合计算,所以在面对海量数据涌入的时候能够实时处理,并且快速查询。

1.6.2 在物联网IoT设备采集存储中的应用

物联网是指通过各种传感器、红外感应等装置与技术,实时采集任何需要监控、连接的物体,采集内容包括声、光、热、力、电等各种信息,并对这些信息进行集中分析处理,实现对这些事物的智能感知和分析。

例如智能家居系统中,需要对各种电器进行实时的数据采集并进行快速分析,从而达到监控报警、大数据计算、业务报表等功能。InfluxDB等时序数据库就起到了重要作用,物联网平台和时序数据库进行数据打通,实现了物联网设备的开发管理、数据分析等一体化方案,构建智慧互联网平台。其具体架构如图1-5所示。

图1-5 智慧物联架构图

物联网设备通过IoT套件设备连接管理,再将数据发送到InfluxDB数据库,然后基于InfluxDB对数据进行分析、监控等。

1.6.3 互联网业务性能监控服务

在互联网服务中,需要采集用户的访问延迟大小、业务服务指标监控数据以及查询返回效率等,时序数据库InfluxDB就可以对这些数据进行多维度分组聚合分析和监控项展示。

举一个例子,某网站需要实时统计每个网页的流畅度、清晰度、单击量、访问量等信息,于是就可以将这些监控项以某一频率写入时序数据库中,通过一定的聚合计算,可以得到某一时间段内哪一个运营商的网络更流畅;查看任意一段时间内某个站点的流畅度曲线;单击率随着流畅度的变化规律。

时序数据库对这些写入的信息进行分析计算,再通过API获取信息,实现高效的实时分析以及建模等需求。

1.6.4 在智能汽车中的应用

作为一个一百年来未变的产业,汽车产业正在以前所未有的速度发生变革,我们将迎来一个脱胎换骨的产业重构。

智能汽车是时代的必然产物,正在一步步地改变我们的生活。从技术层面讲,智能汽车在运行时需要监控各种状态,包括坐标、速度、方向、温度、湿度等,并且需要将数据及时收集起来做大数据分析。这样一来,每年累积的数据量是十分惊人的。如果只是存储下来不做查询也还好,但如果需要进行例如“今天下午六点在滨湖路速度超过70%的汽车有哪些”这种多维度分组聚合查询的操作时,时序数据库会是一个很好的选择。 nC7KVjk9SaeA7iWuVC/a/Qvj2UFVeBIgsU0PO+p5g61rXT3HVWKYUc7NVAxIEkDb



1.7 小结

通过本章的学习,我们了解了什么是时序数据和时序数据库,包括时序数据库数据的写入、读取以及存储的特点。并且对InfluxDB有了基本的掌握,知道InfluxDB的基本概念,了解其独特的设计理念和核心特性。作为开发人员,在未来的工作中应该学会善用InfluxDB,良好地运用其强大的功能来满足日益增长的需求。 nC7KVjk9SaeA7iWuVC/a/Qvj2UFVeBIgsU0PO+p5g61rXT3HVWKYUc7NVAxIEkDb

点击中间区域
呼出菜单
上一章
目录
下一章
×