• 你好!欢迎你的到来
  • 关于我们
  • 首页 博客 学习笔记 技术导航 工具
  • 博文分类
    • PHP(43)
    • MySQL(11)
    • Linux(28)
    • html(3)
    • JQuery(4)
    • JavaScript(9)
    • svn(2)
    • CSS(2)
    • seajs(1)
    • go(44)
    • redis(1)
    • nginx(8)
    • mongo(0)
    • java(0)
    • 算法(0)
    • 其他(26)
    • 生活(1)
    专栏
    • Jquery基础教程
      • 文章:(15)篇
      • 阅读:29563
    • shell命令
      • 文章:(42)篇
      • 阅读:97248
    • Git教程
      • 文章:(36)篇
      • 阅读:165687
    • leetCode刷题
      • 文章:(76)篇
      • 阅读:48023
    • 摘要视图
    • 目录视图
    influxdb的使用(一)
    2019-07-21 12:41 阅读(14006) 评论(0)

    一、influxdb是什么

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

    • 内置HTTP接口,使用方便

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

    • 类SQL的查询语句

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

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

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

    更多的描述,可以看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.conf文件的配置,可以参考官方。

    三、相关概念

    在使用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

    CREATE 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 <cq_name> ON <database_name>



    本文为原创文章,请尊重辛勤劳动,如需转载,请保留本文地址
    http://www.findme.wang/blog/detail/id/684.html

    若您感觉本站文章不错,读后有收获,不妨赞助一下?

    我要赞助

    您还可以分享给朋友哦

    更多
    顶
    10
    踩
    0
    • 下一篇: goland中粘贴后如何保持原来的缩进​
    • 查看评论
    • 正在加载中...
    • 留言
    • 亲,您还没有登录,登录后留言不需要审核哦!
      可以使用如下方式登录哦!
  • CSDN | 新浪微博 | github | 关于我们 | 我要留言 | 友链申请
  • 豫ICP备18038193号    Copyright ©lidequan All Rights Reserved