前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >InfluxDB

InfluxDB

作者头像
框架师
发布于 2021-03-05 13:06:01
发布于 2021-03-05 13:06:01
1.5K00
代码可运行
举报
文章被收录于专栏:墨白的Java基地墨白的Java基地
运行总次数:0
代码可运行

什么是时序数据库?

时序数据库简介排行

主要内容
主要内容

时间序列数据库 Time Series Database (TSDB)

时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。 时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。

特点

基于时间序列数据的特点,关系型数据库无法满足对时间序列数据的有效存储与处理,因此迫切需要一种专门针对时间序列数据来做优化的数据库系统,即时间序列数据库。 对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。时间序列函数优越的查询性能远超过关系型数据库,Informix TimeSeries非常适合在物联网分析应用。

  • 有效处理庞大数据
  • 对重复的部分,Informix TimeSeries只保持一份数据
  • 节省空间50%,有效降低I/O
  • 主键索引更有效
  • 时间序列表头分离的特性不浪费空间;

InfluxDB简介

InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。 InfluxDB是一个用于存储和分析时间序列数据的开源数据库。InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图; 可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计; 官网地址

  • 主要特性
    • 内置HTTP接口,使用方便
    • 数据可以打标记,这样查询可以很灵活
    • 类SQL的查询语句
    • 安装管理很简单,并且读写数据很高效
    • 能够实时查询,数据在写入时被索引后就能够被立即查出

在最新的DB-ENGINES给出的时间序列数据库的排名中,InfluxDB高居第一位,可以预见,InfluxDB会越来越得到广泛的使用。

安装InfluxDB

概念

MySQL

InfluxDB

数据库(同)

database

database

表(不同)

table

measurement

列(不同)

column

tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键)

安装InfluxDB包需要root或是有管理员权限才可以。另进入官网influxDB需要链接外部网络 下载地址

选择时序数据库
选择时序数据库
  • 选择下载的系统版本,我这里下载的是Windows系统版本

选择版本
选择版本
  • 下载完成以后解压压缩包,文件如下

文件内容
文件内容

influxd.exe 启动程序 influx.exe influxDB数据库命令行界面 influxdb.conf 配置文件

启动及常用命令

点击地址栏输入cmd,如下命令启动数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动influxdb数据库
$ start influxd.exe
# 查看配置
$ influxd config
# 查看帮助
$ influx --help
# 退出
$ exit

网络

InfluxDB默认使用下面的网络端口:

  • TCP端口8086用作InfluxDB的客户端和服务端的http api通信
  • TCP端口8088给备份和恢复数据的RPC服务使用

另外,InfluxDB也提供了多个可能需要自定义端口的插件,所以的端口映射都可以通过配置文件修改,对于默认安装的InfluxDB,这个配置文件位于/influxdb/influxdb.conf

配置

安装好之后,每个配置文件都有了默认的配置,你可以通过命令influxd config来查看这些默认配置。

在配置文件/influxdb/influxdb.conf之中的大部分配置都被注释掉了,所有这些被注释掉的配置都是由内部默认值决定的。配置文件里任意没有注释的配置都可以用来覆盖内部默认值,需要注意的是,本地配置文件不需要包括每一项配置。

  • Windows环境下需要配置默认文件夹路径

修改默认配置
修改默认配置

权限

Linux下如果InfluxDB没有使用标准的数据和配置文件的文件夹的话,你需要确定文件系统的权限是正确的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=================以下两条命令未验证=======================
$ chown influxdb:influxdb /mnt/influx
$ chown influxdb:influxdb /mnt/db

可视化程序[InfluxDBStudio]

安装InfluxDBStudio

下载地址

启动程序
启动程序
链接时序数据库

创建链接对象
创建链接对象
默认值
默认值
  • influxDB数据库初始无账号密码,随意填写即可

需要注意的是,链接时序数据库时不能关闭influxd.exe程序

启动程序
启动程序

InfluxQL

第一次安装好InfluxDB之后是没有数据库的(除了系统自带的_internal),因此创建一个数据库是我们首先要做的事,通过CREATE DATABASE <db-name>这样的InfluxQL语句来创建,其中<db-name>就是数据库的名字。数据库的名字可以是被双引号引起来的任意Unicode字符。 如果名称只包含ASCII字母,数字或下划线,并且不以数字开头,那么也可以不用引起来。

  • 测试sql
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 创建数据库
CREATE DATABASE mobai;
-- 查看所有数据库
SHOW DATABASES;
-- 指定使用的数据库
USE mobai;
-- 删除数据库
DROP DATABASE mobai;
-- 查看保留策略
SHOW retention policies ON mobai;
-- 创建保留策略rp-one-year
CREATE retention policy "rp-one-year" ON "mobai" duration 365d replication 1
-- 更改保留策略rp-one-year为mobai的默认策略
ALTER retention policy "rp-one-year" ON "mobai" duration 365d replication 1 DEFAULT
-- 删除保留策略
DROP retention policy "rp-one-year" ON "mobai";

说明:在输入上面的语句之后,并没有看到任何信息,这在CLI里,表示语句被执行并且没有错误,如果有错误信息展示,那一定是哪里出问题了,这就是所谓的没有消息就是好消息

InfluxDB表

​ 与MySQL等关系型数据不同,在InfluxDB中,无需显式创建表,在写入时序数据时,InfluxDB服务器会根据行协议,按需自动创建对应的表。

  • 创建表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 在数据库mobai中,插入数据时,自动创建了表devops-idc-sz。
use mobai;
=====================================================
> use mobai;
Using database mobai
> show measurements;
> insert devops,host=server1 cpu=23.1,mem=0.63
> show measurements;
name: measurements
name
----
devops
>
  • 查看表

​ 通过SHOW语句,,查看数据库mobai中的所有的表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=====================================================
> show measurements;
name: measurements
name
----
devops
>
  • 删除表

​ 通过DROP语句,删除表devops-idc-sz和对应的所有数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP measurement devops
  • 数据写入

​ 通过INSERT语句和行协议,向表devops中插入3条DevOps环境的时序数据记录,时序数据对应的时间为2019/8/30 17:44:53。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> insert devops,host=server01 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server02 cpu=23.8,mem=0.63 1567158293000000000
> insert devops,host=server03 cpu=56.3,mem=0.78 1567158293000000000
  • 数据查询

​ 通过SELECT语句,查询表devops中的所有数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> select * from devops;
name: devops
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 16.1 server01 0.43
1567158293000000000 56.3 server03 0.78
1567158293000000000 23.8 server02 0.63
1597975570681506000 23.1 server1  0.63
>
  • 数据更新

因为时序数据多写少读无更新的特点,InfluxDB,不支持数据更新操作,亦不建议对时序数据记录执行更新操作。如果在某些特殊场景下,必须对时序数据记录的指标值进行更新,可以利用“时间戳(Timestamp)和时间序列线(Series)完全相同的时序数据记录,是同一条时序数据记录,新插入的时序数据,会覆盖原有的时序数据记录”的特性,更新时序数据记录的的指标值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> insert devops,host=server01 cpu=76.1,mem=0.83 1567158293000000000
> select * from devops;
name: devops
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 76.1 server01 0.83
1567158293000000000 56.3 server03 0.78
1567158293000000000 23.8 server02 0.63
1597975570681506000 23.1 server1  0.63
>
  • 数据删除

同样,因为时序数据多写少读无更新和批量删除时序数据记录的特点,InfluxDB不支持删除单条时序数据记录。除了通过保留策略周期性的定时删除时序数据记录,InfluxDB还还还支持通过WHERE条件语句、删除时间序列线、删除表、删除数据库、删除分片(Shard)等方式直接批量删除指定的时序数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 通过WHERE条件语句从指定表中删除时序数据记录,从表devops中,删除标签名为host,标签值为server01、在2019/8/30 17:44:53时间点的时序数据记录。
===================================================================
DELETE FROM devops WHERE "host" = 'server01' AND time = 1567158293s
===================================================================
-- 需要注意:WHERE条件语句,不支持指标(Field),只支持标签和时间戳。)

通过删除时间序列线删除时序数据记录,删除标签对”host”=’server01’对应的时间序列线的所有时序数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP series FROM devops WHERE "host" = 'server01'

通过删除指定表删除时序数据记录,删除表devops对应的所有时序数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP measurement  devops

通过删除指定数据库删除时序数据记录,删除数据库mobai对应的所有时序数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP database mobai

通过删除指定分片删除时序数据记录,删除分片 6对应的所有时序数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
===========================插入数据==================================
> insert devops,host=server01 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server02 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server03 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server04 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server05 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server06 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server07 cpu=16.1,mem=0.43 1567158293000000000
> insert devops,host=server08 cpu=16.1,mem=0.43 1567158293000000000
===========================查看数据==================================
> SELECT * FROM devops
name: devops
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 16.1 server01 0.43
1567158293000000000 16.1 server08 0.43
1567158293000000000 16.1 server07 0.43
1567158293000000000 16.1 server06 0.43
1567158293000000000 16.1 server05 0.43
1567158293000000000 16.1 server04 0.43
1567158293000000000 16.1 server03 0.43
1567158293000000000 16.1 server02 0.43
===========================查看分片数据============================
> show shards
name: _internal
id database  retention_policy shard_group start_time           end_time             expiry_time          owners
-- --------  ---------------- ----------- ----------           --------             -----------          ------
1  _internal monitor          1           2020-08-20T00:00:00Z 2020-08-21T00:00:00Z 2020-08-28T00:00:00Z
2  _internal monitor          2           2020-08-21T00:00:00Z 2020-08-22T00:00:00Z 2020-08-29T00:00:00Z

name: mobai
id database retention_policy shard_group start_time           end_time             expiry_time          owners
-- -------- ---------------- ----------- ----------           --------             -----------          ------
4  mobai    autogen          4           2019-08-26T00:00:00Z 2019-09-02T00:00:00Z 2019-09-02T00:00:00Z
3  mobai    autogen          3           2020-08-17T00:00:00Z 2020-08-24T00:00:00Z 2020-08-24T00:00:00Z
===========================删除全部数据============
> drop shard 4
> select *  from  devops

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
InfluxDB从原理到实战 - InfluxDB常用的基础操作
在本文中将介绍InfluxDB常用的基础操作,帮助读者建立对InfluxDB的感性认识,快速的动手玩起来,持续查询(Continuous Queies)、Group by、Series、行协议(Line Protocol)、InfluxQL等高级特性和细节,将会在后续文章中逐步介绍。
hanj4096
2019/08/30
4.3K0
InfluxDB从原理到实战 - InfluxDB常用的基础操作
influxdb 时间序列数据库
1、InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等) 可度量性:你可以实时对大量数据进行计算 基于事件:它支持任意的事件数据 1)无结构(无模式):可以是任意数量的列 2)可拓展的 3)支持min, max, sum, count, mean, median 等一系列函数,方便统计 4)原生的HTTP支持,内置HTTP API 5)强大的类SQL语法 6)自带管理界面,方便使用 2、安装: rpm -ivh https://dl.influxdata.com/influxdb/releases/influxdb-0.13.0.x86_64.rpm 3、启动: sudo service influxdb start 4、客户端: 在usr/bin里使用influx即可登入Influx服务器。也可以将路径加入环境变量中,这样既可在任意地方使用influx。 InfluxDB自带web管理界面,在浏览器中输入 http://服务器IP:8083 即可进入web管理页面。 5、基本概念: database 数据库 measurement 表 point 表中的一行数据 point由time(自动生成的时间戳),field数据,tags由索引的数据 series所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。 6、基本操作: 客户端命令行、HTTP API、各语言API库 show databases; create database test drop database test use test
用户5760343
2022/05/14
1.2K0
influxdb 时间序列数据库
InfluxDB常见疑问与解答 - 数据写入时如何在表级别指定保留策略
这个特性InfluxDB支持的,写入时序数据时,在行协议前加上保留策略名,以influx命令行操作为例,insert语句的语法如下。
hanj4096
2019/10/18
3.3K0
InfluxDB常见疑问与解答 - 数据写入时如何在表级别指定保留策略
性能监控平台搭建 - InfluxDB安装与使用指南
InfluxDB是目前比较主流的时序数据库,而时序数据库则是以时间序列为轴的数据库,与关系型数据库相比它有几个特点:
上帝De助手
2019/09/17
1.8K0
influxdb 学习
数据点包括time(一个时间戳),measurement(例如cpu_load),至少一个k-v格式的field(也即指标的数值例如 “value=0.64”或者“temperature=21.2”),零个或多个tag,其一般是对于这个指标值的元数据(例如“host=server01”, “region=EMEA”, “dc=Frankfurt)。
solate
2019/07/22
2.7K0
「influxDB 原理与实践(一)」安装部署,实现基础的添加删除查询功能
开源的时间序列数据库。什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间磁盘使用率、网络流量、CPU的使用率等。
源码之路
2020/09/04
2.5K0
「influxDB 原理与实践(一)」安装部署,实现基础的添加删除查询功能
一篇文章搞懂InfluxDB时区
InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,InfluxDB返回的时间戳对应的是UTC时间。InfluxDB支持通过在tz()子句中指定TZ格式的时区名字,如Asia/Shanghai,将UTC时间转换为中国本地时间,基本语法如下。
hanj4096
2019/11/07
10.6K0
一篇文章搞懂InfluxDB时区
Docker监控方案(TIG)的研究与实践之Influxdb
前言: Influxdb也是有influxdata公司(www.influxdata.com )开发的用于数据存储的时间序列数据库.可用于数据的时间排列。在整个TIG(Telegraf+influxdb+grafana)方案中,influxdb可算作一个中间件,主要负责原始数据的存储,并按照时间序列进行索引构建以提供时间序列查询接口。在整个TIG方案中,应该先构建的就是Influxdb。 Influxdb研究与实践: influxdb介绍: 使用TSM(Time Structured Merge)存储引擎,
BGBiao
2018/02/26
9500
Docker监控方案(TIG)的研究与实践之Influxdb
时序数据库详解和使用说明_时序数据库 应用场景
什么是时间序列数据(Time Series Data,TSD,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于IT基础设施、运维监控系统和物联网中。
全栈程序员站长
2022/11/09
4.9K0
时序数据库详解和使用说明_时序数据库 应用场景
InfluxDB和Grafana集成
在这个例子中,我们将在同一台机器(Ubuntu 16.04)上安装InfluxDB和Grafana,然后配置两者,以便Grafana可以可视化存储在InfluxDB中的数据。我们将使用InfluxDB版本1.3.5和Grafana版本4.4.3。
后场技术
2020/09/03
1.8K0
InfluxDB和Grafana集成
「influxDB 原理与实践(二)」详解influxDB的写入与查询
RESTful风格的接口,返回JSON格式的响应数据,并支持身份认证、JWT令牌、丰富的HTTP响应代码等。 influxDB API接口及接口的定义描述如下图所示:
源码之路
2020/09/04
8.3K0
「influxDB 原理与实践(二)」详解influxDB的写入与查询
influxDb_ef mongodb
InfluxDB(时序数据库)(influx,[ˈɪnflʌks],流入,涌入),常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计;
全栈程序员站长
2022/11/01
1K0
influxDb_ef mongodb
一小时入门时序数据库 influxDB
InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。 主要特性有:
陈大剩博客
2023/03/06
1.1K0
InfluxDB Cluster - InfluxDB Enterprise 集群的开源替代方案
InfluxDB Cluster - 一个开源分布式时间序列数据库,InfluxDB Enterprise 的开源替代方案
奇小在
2022/10/22
2.6K0
InfluxDB使用HTTP的API编写数据
Centos7 下 InfluxDB 从安装开始到入门 InfluxDB关键概念 经过前面两个篇章的探讨,基本已经了解了InfluxDB的操作,下面再来继续看看使用HTTP API编写数据。
Devops海洋的渔夫
2019/05/31
3.3K0
Python简单使用InfluxDB
之前已经在自己的MQTT服务器上安装好了InfluxDB时序数据库,接下来写个Python程序测试下.
py3study
2020/01/03
1.2K0
彻底搞懂时序数据库InfluxDB,在SpringBoot整合InfluxDB
之前介绍了运维监控系统Prometheus,然后就有朋友问我关于时序数据库的情况,所以这里总结一下时序数据库,并以InfluxDB为例,介绍时序数据库的功能特性和使用方式,希望能对大家有所帮助。
架构师精进
2023/10/06
19.5K0
彻底搞懂时序数据库InfluxDB,在SpringBoot整合InfluxDB
Install InfluxDB
这两方面的特性 Elasticsearch 也有覆盖,那它们两者的区别是什么呢,可以参考下面的文章
franket
2021/08/11
9770
Centos7 下 InfluxDB 从安装开始到入门
InfluxDB的开源版本在单个节点上运行。如果您需要高可用性来消除单点故障,请考虑InfluxDB企业版。
Devops海洋的渔夫
2019/05/31
1.1K0
go监控方案(5) -- influxdb
InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。
solate
2019/07/22
5770
相关推荐
InfluxDB从原理到实战 - InfluxDB常用的基础操作
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验