influxdb时序型数据库基础

2023-05-16

文章目录

    • 什么是InfluxDB
    • 时序数据特点
    • 常见应该场景
    • 时序数据库解决什么问题
    • InfluxDB的优势
    • InfluxDB常用命令

什么是InfluxDB

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

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

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

对于传统关系型数据库,增删改查应该是必备且常用的功能,而influxdb常用的只有insertselect,没有提供update语法,虽然有delete可以删除数据(delete语法和mysql相似),但是需求不大。

因为存储的数据都是跟时间有关的测量数值,多用于图表展示,不太需要人为的去删除,而有时统计的数据是秒级,甚至毫秒级、纳秒级的,势必造成数据量巨大。如果一直长久存储会占用机器大量资源,而且有些数据越旧越失去它的时效性,越没有参考价值,所以保留策略retention policy就是可以让数据存储一段时间后自动清除。

时序数据特点

时序数据有这几个属性:

度量的数据集(measurement),类似于关系型数据库中的 table;

一个数据点(point),类似于关系型数据库中的 row;

时间戳(timestamp),表征采集到数据的时间点;

维度列(tag),代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用;

指标列(field),代表数据的测量值,随时间平滑波动。
在这里插入图片描述

常见应该场景

获取最新状态,查询最近的数据(例如传感器最新的状态)
展示区间统计,指定时间范围,查询统计信息,例如平均值,最大值,最小值,计数等。。。
获取异常数据,根据指定条件,筛选异常数据

举例:

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

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

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

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

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

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

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

时序数据库解决什么问题

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

  • 专为时序存储和高性能读写而设计:计算机虚拟世界的各种系统和应用,以及物理世界的IoT设备等都在创建海量的时序数据,每秒千万级的数据吞吐量是很常见的,而且这些数据还需要可以以非阻塞方式接收并且可压缩以节省有限的存储资源。如何支持千万级/秒数据的写入。如何支持千万级/秒数据的聚合和查询。
  • 专为实时操作而设计:预测能力和实时决策能力,需要收到数据后,就能实时输出最新的数据分析结果,执行预定义的操作。
  • 专为高可用性而设计:现代软件系统需要全天候可用,除了基本的集群能力,还需要根据需求自动扩容和缩容,支持柔性可用等。
  • 成本敏感:海量数据存储带来的是成本问题,如何更低成本存储这些数据是时序型数据库需要解决的关键问题。

InfluxDB的优势

InfluxData选择从头开始构建InfluxDB以支持下一代时序中台的需求,InfluxDB通过实现高度可扩展的数据接收和存储引擎,可以高效地实时收集、存储、查询、可视化显示和执行预定义操作。

它通过连续查询提升查询效率和缩短延迟,通过数据保留策略,及时高效地删除过期冷数据,提升存储效率。

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

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

编写代码实现跨集群数据分片功能、聚合运算和采样功能、数据生命周期管理功能等。
实现丰富的API接口。
编写用于数据采集的工具。
实现实时处理模块并编写用于监控和警报的代码。
编写可视化引擎以向用户显示时序数据。

InfluxDB常用命令

# ==================数据库操作==================
create database db_name
show databases
drop database db_name
use db_name
show  measurements

# ==================数据库策略操作==================
show retention policies on device_ea
# ===创建===
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> 
DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]
# 为monitor库创建一个数据保留时长30天的rp,同时设置shard duration为1d,副本为1,并设置为默认rp
create retention policy rp_30_days on monitor duration 30d replication 1 shard duration 1d default
# 为monitor库创建一个数据保留时长一个星期的rp,副本为1
create retention policy rp_one_week on monitor duration 1w  replication 1
# ===修改===
# 修改rp_1_week 保留数据时长为15days 
alter retention policy rp_1_week on monitor duration 15d replication 1 default 
# 设置rp_30_days为默认rp
alter retention policy rp_30_days on monitor default 
# ===删除===
# 删除名为rp_1_week的rp
drop retention policy rp_1_week on monitor

# ==================插入操作==================
# 在没有use 哪个db的时候需要指定db,选择monitor数据库,指定rp为rp_3_days写入数据到service_qps
insert into monitor.rp_3_days service_qps,svrName=TaskSvr,hostName=dev4 qps=12.9
# 切换选择monitor
use monitor
# 并指定rp为rp_3_days写入数据到service_qps
insert into rp_3_days service_qps,svrName=TaskSvr,hostName=dev4 qps=12.9
# 【完全错误的写法】
insert rp_3_days.service_qps,svrName=TaskSvr,hostName=dev4 qps=12.9


# ==================查询操作==================
# 默认指定默认RP
select  *  from  service_qps
# 指定RP查询
select  *  from  rp_3_days.service_qps

参考:

https://www.freesion.com/article/53171426136/#retention_policy_40

https://blog.csdn.net/qq355972697/article/details/129775503

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

influxdb时序型数据库基础 的相关文章

  • Centos7 部署InfluxDB

    因为目前网络上关于InfluxDB的资料并不多 xff0c 所以这里建议多参考官网 官网 xff1a Home InfluxData 点击此处的Docs xff1a 这里选择 InfluxDB OSS xff1a 使用文档时根据需求选择查看
  • influxdb 数据库安装和简单使用

    1 wget https dl influxdata com influxdb releases influxdb 1 8 4 x86 64 rpm 或者从 influxdb 1 8 4 x86 64 rpm 其它文档类资源 CSDN下载
  • proxmox ve6+influxdb+grafana 集群监控

    pve支持将自身运行状态发送至第三方服务器 0 环境介绍 root 64 pve143 span class token comment pveversion v span proxmox ve 6 2 1 span class token
  • InfluxDB基本命令

    InfluxDB概述 一 释义 名词 概念 database 数据库 measurement 数据库中的表 points 表里边的一行数据 series 所有在数据库中的数据 都需要通过图表来表示 series表示这个表里面的所有的数据可以
  • Grafana ALert功能使用webhook,并预警数据信息

    使用webhook预警的时候如果能够同时获取预警的数据信息是最好不过的 这里我们就来看下怎么获取这些东西 数据源依然选用InfluxDB 具体配置过程可以参考前边两篇文章 现在从webhook配置开始 无参对接 在Grafana的Alert
  • InfluxDB - 基于标签在 where 子句中包含多个值

    我正在尝试根据标签值查询数据 是否可以在 where 子句中包含多个查询 我找不到类似于 SQL 中 IN 运算符的运算符 select from students where rollNumber 1 limit 10 Students
  • 制作每日重置的InfluxDB/Grafana累积函数(锯齿图)

    我将能源使用数据记录为计数器 我希望将其显示为每天重置的累积图表 类似地在这里问 我可以按如下方式生成累积值 SELECT mean value FROM energy WHERE timeFilter GROUP BY time inte
  • 带有 Influxdb 的 Grafana 世界地图面板不显示点

    我安装了 Grafana 的世界地图面板 但无法在世界地图面板上显示点 我在看Grafana 世界地图 表数据源和其他链接但没有找到答案 我尝试使用country json 添加截屏我的声誉没有 10 所以我无法添加超过 2 个链接 我也尝
  • Docker-Compose 上的 InfluxDB 无法读取 SSL 证书文件

    我在尝试使用在 Docker Compose 上运行的 InfluxDB v1 8 配置 SSL 时遇到一些问题 我跟着官方文档 https docs influxdata com influxdb v1 8 administration
  • 如何使用类似 SQL 的接口 INSERT 到 influxDB 中?

    是否有可能INSERT使用 InfluxDB 上类似 SQL 的接口将数据转换为系列 测量值 是的 您可以简单地INSERT线路协议字符串 https docs influxdata com influxdb v1 6 tools shel
  • influxdb:计算布尔事件的持续时间?

    我的 influxdb 数据库中有来自门传感器的数据 这是一个布尔传感器 门是否打开 值为false 或者它被关闭 值为true 表格如下所示 name door time value 1506026143659488953 true 15
  • 用千分尺查询数据

    我们有这个奇特的监控系统 我们的 spring boot 服务通过千分尺将指标发布到流入数据库 有一个不错的 grafana 前端 但问题是我们现在处于这样一个阶段 我们必须在其他服务中提供其中一些指标来进行推理 整个体系是我的前任建立的
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • 使用自定义窗口聚合函数进行 Influxdb Flux 查询

    您能否帮助我使用 InfluxDB 2 Flux 查询语法来构建带有自定义聚合函数的窗口查询 我浏览了在线文档 但它们似乎缺乏有关如何从自定义聚合函数中获取实际窗口内容 第一条 最后一条记录 的示例 它也没有立即描述自定义函数的预期签名 我
  • 在将连续查询添加到生产 influxdb 之前测试连续查询的最佳方法是什么?

    将新的连续查询添加到生产数据库 influxdb 的最佳方法是什么 克隆生产 influxdb 吗 我希望避免这种情况 有没有一种好的方法可以通过网络管理界面来测试和尝试它们 我想你可以 创建临时测量 设置 CQ 插入一些示例数据并在 CQ
  • 如何获取测量中的条目数

    我是 influxdb 的新手 我刚刚开始阅读流入文档 我似乎无法得到相当于 从表中选择计数 在 influxdb 中工作 我有一个称为购物车的测量 time status cartid 1456116106077429261 0 A 14
  • 查询 influxdb 的日期

    我在 influxdb 中有一个表 其中有一列名为 expirydate 在专栏中我有一些日期 例如 2016 07 14 或 2016 08 20 我只想选择 2016 07 14 日期 但我不确定如何 目前我的查询是 SELECT FR
  • 如何按 InfluxDB 中字段的计数进行分组?

    我在 InfluxDB 中有一些数据 这些数据是某些 TCP 连接的连接事件 所以测量是connection events 标签是 连接系统的mac address 以及一些其他元数据 值刚连接 true false 我想做的是这样的 se
  • Grafana中从InfluxDB中获取总共两个系列的数据

    我现在很困惑 我在 Influx 和 Grafana 的深处花了一三天时间 绘制了一些对我的需求至关重要的图表 但是 对于最后一个指标 我需要合计两个指标 列值中的两个增量计数 我们将它们称为 notification one 和 noti
  • 更改 Grafana 端口

    我目前在 Grafana 中有 InfluxDB 提供仪表板 我最终将在服务器上部署这个堆栈 但是 Grafana 的默认端口是 80 我必须更改此端口 但我不知道如何更改 有人可以帮忙吗 Thanks 变化不仅在于 etc grafana

随机推荐