influxdb的原理和用法是什么

77次阅读
没有评论

共计 2820 个字符,预计需要花费 8 分钟才能阅读完成。

今天就跟大家聊聊有关 influxdb 的原理和用法是什么,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

influxdb 是什么

influxdb 是一个由 go 语言开发的、用于存储和分析时间序列数据的开源数据库。特点如下:

内置 HTTP 接口,使用方便

数据可以打标记,查让查询可以很灵活

类 SQL 的查询语句

安装管理很简单,并且读写数据很高效

能够实时查询,数据在写入时被索引后就能够被立即查出

支持数据存储策略 (RP) 和数据归档(CQ)

更多的描述,可以看 influxdb 官方描述。

influxdb 安装

我们可以直接从官方下载二进制安装,也可以基于 docker 镜像来安装。基于 docker 镜像安装,执行如下命令即可

docker run -d –name influxdb -p 8860:8086 \

-v $PWD/influxdb.conf:/usr/local/influxdb/influxdb.conf:ro \

-v $PWD:/data/influxdb \

influxdb -config /usr/local/influxdb/influxdb.conf

参数描述:

-d:在后台运行容器,并打印出容器 id

–name influxdb 指定容器的名字

-p 8081:8082 指定端口映射,将宿主机的 8860 端口,映射到容器的 8086 端口

-v $PWD/influxdb.conf:/usr/local/influxdb/influxdb.conf:ro 将当前目录下面 influxdb.conf 挂载到容器的 /usr/local/influxdb/influxdb.conf 目录。因为默认挂载的路径权限为读写,通过 ro,可以限制权限为只读,防止容器中修改配置文件。

-v $PWD:/data/influxdb 将当前目录,挂载到容器的 /data/infludb 目录。这样,我们可以指定 infludb 的数据文件,写到 /data/infludb 这个目录,这样可以实现数据的落盘。

influxdb 相关概念

在使用 infludb 之前,我们先了解一波它的一些概念,比如 database、Retention Policy、measurement、Continuous Query、point、field、tag 等。首先,整体认识一下:

1、database

database 即数据库,可以类比 mysql、mongo 等数据库。

create database test – 创建数据库

show databases – 展示所有数据库

use test – 选择使用的数据库

2、Retention Policy

retention policy,即存储策略,简称 RP,用来控制数据库的存储时间。InfluxDB 会比较服务器本地的时间戳和你数据的时间戳,并删除比 RP 里面的持续时间更老的数据。单个数据库中可以有多个 RP,但是每个数据的 RP 是唯一的。RP 的相关操作如下:

查看数据库 test 的 rp

SHOW RETENTION POLICIES ON test

给 test 数据库创建新的 rp

CREATE RETENTION POLICY rp_name ON db_name DURATION 3w REPLICATION 1 DEFAULT

rp_name:RP 策略名

db_name:具体的数据库名

3w:设置数据保存 3 个星期,3 个星期之前的数据将被删除,infludb 它具有各种时间参数,比如:h(小时), d(天),w(星期)

REPLICATION 1:副本个数,这里填 1 就可以了。

DEFAULT 设为默认的策略。

修改数据库的 rp

修改 rp 使用如下命令:

CREATE RETENTION POLICY rp_name ON db_name DURATION 3d DEFAULT

删除数据库的 rp

DROP RETENTION POLICY rp_name ON db_name

3、measurement

measurement,可以类比传统数据库中的表。传统额数据库,支持增删改查,infludb 仅仅支持增和查,删除可以同 RP 来实现。

数据的插入

influxdb 支持 http 和 rpc 方式来插入数据,当然也支持命令行方式插入数据,如下:

use test – 使用 test 数据库

insert weather,altitude=1000,area= 北 temperature=11,humidity=-4

其中:

weather:表名,即 measurement 的名字

altitude=1000,area= 北 为 tag,可以把 tag 理解为 mysql 中带索引的列。

temperature=11,humidity=-4 为 field,,可以把 field 理解为 mysql 中不带索引的列。

针对每条插入的数据,influxdb,会自动加一列,列的名字为 time,用于记录当前数据的时间。

数据的查询

influxdb 支持 where、group、order、limit 等字句。如下:

select * from weather order by time desc limit 5

4、连续查询(Continuous Queries)

influxdb 中的数据,当超过保存策略里指定的时间之后,就会被删除。如果我们不想删除掉,但是又担心容量过大怎么办呢? 可以对数据采用更大的粒度,进行归档,即以降低精度为代价。比如把原先每秒的数据,归档存为分钟的数据,把原先分钟的数据,归档存为每小时或每天的数据等,这样在容量固定的情况下,可以存储更多的数据。在 influxdb 中,这种操作,叫连续查询(Continuous Queries)。

查看数据库的 Continuous Queries

SHOW CONTINUOUS QUERIES

创建 Continuous Queries

1CREATE CONTINUOUS QUERY cq_3d ON testDb BEGIN SELECT mean(age) as age INTO test_3days FROM test GROUP BY time(3d), * END

其中:cq_3d:连续查询的名字

testDb:具体的数据库名。

mean(age) as age: 计算 age 的平均值,后并字段名改为 age

test:measurement 名称,即基数据库哪个表进行归档

test_3days:measurement 名称,数据归档后,存储的表名。

3d:归档的频率,即每间隔 3 天,归档一次。

*:针对所有的 tag 进行 group by 操作,当然我们也可以基于特定的 tag 来 group by 操作。需要注意,针对哪些 tags 进行 group by 操作,那么归档后的表 test_3days 中,就会有哪些 tags。

删除 Continuous Queries

删除操作命令如下:

DROP CONTINUOUS QUERY ON

看完上述内容,你们对 influxdb 的原理和用法是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计2820字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)