首页 > 数据库 >时序数据库InfluxDB介绍

时序数据库InfluxDB介绍

时间:2023-04-16 14:01:59浏览次数:37  
标签:存储 数据库 InfluxDB 查询 时序 数据

1什么是InfluxDB

InfluxDB是一个开源的、高性能的时序型数据库,在时序型数据库DB-Engines Ranking上排名第一。

在介绍InfluxDB之前,先来介绍下时序数据。按照时间顺序记录系统、设备状态变化的数据被称为时序数据(Time Series Data),如CPU利用率、某一时间的环境温度等。

时序数据以时间作为主要的查询纬度,通常会将连续的多个时序数据绘制成线,制作基于时间的多纬度报表,用于揭示数据背后的趋势、规律、异常,进行实时在线预测和预警,时序数据普遍存在于IT基础设施、运维监控系统和物联网中。随着物联网时代的到来,时序数据的数据量呈井喷式爆发,针对于这一数据细分的优化存储显得越来越重要。

最初,使用通用存储系统存储时序数据,如MySQL。第一代时序平台,如KDB +、RRDtool、Graphite等,在20年前就推出了,主要用于存储和分析数据中心的时序数据,以及高频金融数据、gu piao 波 dong 率等。

根据DB-Engines等数据库趋势跟踪和行业分析网站发布的信息,时序型数据库是数据库市场中份额增长最快的部分。原因很明显,计算机虚拟世界,如数据库、网络、容器、系统、应用程序等,和物理世界,如家用设备、城市基础设施、工厂机器、电力设施等,正在创建海量的时序数据。

现在更多的企业会通过时序存储和数据分析来获得预测能力和实时决策能力,从而为客户提供更好的使用体验。这意味着底层数据平台需要发展以应对新的工作负载的挑战,以及更多的数据点、数据源、监控维度、控制策略和精度更高的实时响应,对下一代时序中台提出了更高的要求

时序数据库InfluxDB介绍_数据库

2那么时序数据有什么特点呢?

 时序数据有这几个属性:

  1.  度量的数据集(measurement),类似于关系型数据库中的 table;
  2.  一个数据点(point),类似于关系型数据库中的 row;
  3.  时间戳(timestamp),表征采集到数据的时间点;
  4.  维度列(tag),代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用;
  5.  指标列(field),代表数据的测量值,随时间平滑波动。

 如下图所示的数据:

时序数据库InfluxDB介绍_数据_02

3对于时序数据,我们总结了以下特点:

3.1数据特点:

数据量大,数据随着时间增长,相同维度重复取值,指标平滑变化(某辆车的某个设备上传上来平滑变化的轨迹坐标)。

3.2写入特点:

 高并发写入,且不会更新(轨迹不会更新)【基本上都是插入,没有更新的需求】。

3.3查询特点:

按不同维度对指标进行统计分析,存在明显的冷热数据,一般只会查询近期数据(一般我们只会关心近期的轨迹数据)。

数据基本上都有时间属性,随着时间的推移不断产生新的数据。

数据量大,每秒钟需要写入千万、上亿条数据

4业务方常见需求

获取最新状态,查询最近的数据(例如传感器最新的状态)

展示区间统计,指定时间范围,查询统计信息,例如平均值,最大值,最小值,计数等。。。

获取异常数据,根据指定条件,筛选异常数据

举例:

监控软件系统: 虚拟机、容器、服务、应用

监控物理系统: 水文监控、制造业工厂中的设备监控、国家安全相关的数据监控、通讯监控、传感器数据、血糖仪、血压变化、心率等

资产跟踪应用: 汽车、卡车、物理容器、运货托盘

金融交易系统: 传统证券、新兴的加密数字货币

事件应用程序: 跟踪用户、客户的交互数据

商业智能工具: 跟踪关键指标和业务的总体健康情况

在互联网行业中,也有着非常多的时序数据,例如用户访问网站的行为轨迹,应用程序产生的日志数据等等

5时序数据库为了解决什么问题?

传统数据库通常记录数据的当前值,时序型数据库则记录所有的历史数据,在处理当前时序数据时又要不断接收新的时序数据,同时时序数据的查询也总是以时间为基础查询条件,并专注于解决以下海量数据场景的问题:

专为时序存储和高性能读写而设计:计算机虚拟世界的各种系统和应用,以及物理世界的IoT设备等都在创建海量的时序数据,每秒千万级的数据吞吐量是很常见的,而且这些数据还需要可以以非阻塞方式接收并且可压缩以节省有限的存储资源。如何支持千万级/秒数据的写入。如何支持千万级/秒数据的聚合和查询。

专为实时操作而设计:预测能力和实时决策能力,需要收到数据后,就能实时输出最新的数据分析结果,执行预定义的操作。

专为高可用性而设计:现代软件系统需要全天候可用,除了基本的集群能力,还需要根据需求自动扩容和缩容,支持柔性可用等。

成本敏感:海量数据存储带来的是成本问题,如何更低成本地存储这些数据,是时序型数据库需要解决的关键问题。

6InfluxDB的优势

InfluxData选择从头开始构建InfluxDB以支持下一代时序中台的需求,InfluxDB通过实现高度可扩展的数据接收和存储引擎,可以高效地实时收集、存储、查询、可视化显示和执行预定义操作。它通过连续查询提升查询效率和缩短延迟,通过数据保留策略,及时高效地删除过期冷数据,提升存储效率。

为什么通用数据库在时序场景上不是最优的选择呢?许多通用数据库正在为时序数据添加一些支持,虽然可能很容易使用,但它们基本上都不是针对海量时序数据的吞吐量和实时操作而设计的。

与InfluxDB相比,通用数据库,如Cassandra、MongoDB、HBase等,需要开发人员投入大量的时间进行代码编写,以开发与InfluxDB类似的功能。具体来说,开发人员需要做如下工作:

编写代码实现跨集群数据分片功能、聚合运算和采样功能、数据生命周期管理功能等。

实现丰富的API接口。

编写用于数据采集的工具。

实现实时处理模块并编写用于监控和警报的代码。

编写可视化引擎以向用户显示时序数据。

标签:存储,数据库,InfluxDB,查询,时序,数据
From: https://blog.51cto.com/u_15130867/6193454

相关文章

  • Influxdb的基本概念
    1influxdb的介绍InfluxDB是领先的开源时间序列数据库(TSDB)。InfluxDB使用Go语言编写,适用于各类时间序列数据的高效存储与检索。1.1InfluxDB的特点:每条记录都必须有时间戳字段(不设置会自动生成,类似关系型数据库的主键)提供海量数据的写入和读取能力提供针对时序的聚合函数,方便查询数......
  • 一体化数据安全平台-解决方案-数据库运维安全管控
    企业的研发测试人员、数据库运维人员经常需要使用各种数据库运维工具直接访问企业的生产数据库,进行数据库运维、数据分析、故障定位等工作。有时候,企业还因为业务的需要,把数据库的访问权限开放给第三方外包人员。企业的生产数据库中可能存储着涉及知识产权的重要数据、涉及用户隐私......
  • 9、数据库学习规划:Oracle - 学习规划系列文章
          甲骨文公司的Oracle数据库是笔者认为的目前市面上性能最强大的数据库。其版本也发展到了现在的12c,提供的功能也更加的强大了。以前笔者使用的是9i,十几年过去了,也才发展到12代,说明Oracle数据库的性能和底层技术是非常完善和强大的了。 1、简介;Oracle公司......
  • 10、数据库学习规划:MySQL - 学习规划系列文章
          MySQL数据库是笔者认识的几个流行的数据库之一。类似于Linux重装系统,其也是开源的,最主要是有很多的社区支持,众多的开发者对其能够进行使用,所以其功能也挺强大,便于使用。通过对MySQL数据库的学习,笔者认为其是现今贡献最大和使用最广泛的数据库。因为其有社区版,能够免......
  • 数据库与大数据的界限是否正逐渐模糊?
    过去,数据库主要用于存储和管理结构化数据,而大数据则涉及处理大规模、复杂的数据,包括结构化、半结构化和非结构化数据。然而,随着数据量不断增长和数据种类不断增多,数据库和大数据之间的区别越来越模糊。现代数据库已经开始支持非常大规模的数据,并且很多数据库技术也已经开始支持半结......
  • 具体的数据库操作
    Brand类packagecom.itheima.pojo;/***品牌**alt+鼠标左键:整列编辑**在实体类中,基本数据类型建议使用其对应的包装类型*/publicclassBrand{//id主键privateIntegerid;//品牌名称privateStringbrandName;//企业名称......
  • Q:数据库方法的传播特性,外层方法的事务注解@Transactional默认会影响本方法么
    外层方法的事务注解默认会影响本方法么涉及知识:事务的传播特性实验前推测:目前了解内、外方法某个发生异常执行回滚是否影响另一个方法是由配置的哪个传播特性决定的。推测内方法出现异常要导致外方法的事务也要回滚,因为这个在现实场景最普遍。实验:描述:roleService.inse......
  • 01数据库环境搭建
    创建数据库1.打开navicat新建数据库,运行sql文件    ......
  • delphi FastReport 从流(数据库)中加载和保存报表
    FastReport从流(数据库)中加载和保存报表属性和方法TfrxReport.LoadFromStreamprocedureLoadFromStream(Stream:TStream);从流中加载报表。参数Stream来源流。TfrxReport.SaveToStreamprocedureSaveToStream(Stream:TStream);将报表保存到流中。参数Stream来源......
  • 查看oracle数据库中的函数
    SQLPLUS下:查看建了哪些函数,注意,引号内大写selectobject_namefromuser_objectswhereobject_type='FUNCTION';查看函数内容,引号内为你要查询的函数名,也要大写selecttextfromuser_sourcewherename='函数名';PLSQLDeveloper下查询用户下的函数:SELECT*FROMdba_objects......