转自:https://blog.csdn.net/Jailman/article/details/78427896?locationNum=6&fps=1

新的infludb版本已经取消了页面的访问方式,只能使用客户端来查看数据

一、influxdb与传统数据库的比较

库、表等比较:

influxDB 传统数据库中的概念
database 数据库
measurement 数据库中的表
points 表里面的一行数据

influxdb数据的构成:

Point由时间戳(time)、数据(field)、标签(tags)组成。

Point属性 传统数据库中的概念
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags 各种有索引的属性:地区,海拔

这里不得不提另一个名词:series:

所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。具体可以通过SHOW SERIES FROM "表名" 进行查询。

influxdb使用的端口如下:

8083: Web admin管理服务的端口, http://localhost:8083
8086: HTTP API的端口
8088: 集群端口(目前还不是很清楚, 配置在全局的bind-address,默认不配置就是开启的)

二、安装及增删改查

1、安装

# wget https://dl.influxdata.com/influxdb/releases/influxdb-1.1.0.x86_64.rpm
# rpm -ivh influxdb-1.1.0.x86_64.rpm
# systemctl enable influxdb
# systemctl start influxdb

注:本示例是在centos7/rhel7中配置的服务,如果在rhel6下,可以使用service进行服务配置和启动。

2、命令行下创建及查询

通过influx命令进行管理,可以使用如下命令创建数据库:

> CREATE DATABASE "testDB"
> show databases //查询当前的所有数据库
> show databases
name: databases
---------------
name
_internal
testDB
> use testDB //使用某个数据库

建库的操作可以发现非常类似于mysql下的操作。而在influxdb下没有细分的表的概念,influxdb下的表在插入数据库的时候自动会创建。可以通过SHOW measurements命令查看所有的表,这个类似于mysql下的show tables; 。

> INSERT cpu,host=serverA,region=us_west value=0.64 //在cpu表中插入相关的数据
> SELECT * FROM cpu ORDER BY time DESC LIMIT 3 //查询最近的三条数据
> SELECT * FROM /.*/ LIMIT 1 //正则表达式查询
> delete from cpu where time=1480235366557373922 //删除某条数据
> DROP MEASUREMENT "measurementName" //删除表

update更新语句没有,不过有alter命令,在influxdb中,删除操作用和更新基本不用到 。在针对数据保存策略方面,有一个特殊的删除方式,这个后面再提。

关于用户的操作如下:

# 显示用户
SHOW USERS
# 创建用户
CREATE USER "username" WITH PASSWORD 'password'
# 创建管理员权限的用户
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
# 删除用户
DROP USER "username"

influxdb的权限设置比较简单,只有读、写、ALL几种。更多用户权限设置可以参看官方文档:https://docs.influxdata.com/influxdb/v1.0/query_language/authentication_and_authorization/ 。默认情况下,influxdb类似与mongodb,是不开启用户认证的,可以修改其 conf文件,配置http块内容如下:

[http]
enable = true
bind-address = ":8086"
auth-enabled = true # 开启认证

三、数据保存策略及连续查询

1、数据保存策略

一般情况下基于时间序列的point数据不会进行直接删除操作,一般我们平时只关心当前数据,历史数据不需要一直保存,不然会占用太多空间。这里可以配置数据保存策略(Retention Policies),当数据超过了指定的时间之后,就会被删除。

SHOW RETENTION POLICIES ON "testDB" //查看当前数据库的Retention Policies
CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT //创建新的Retention Policies
#注释如下:
rp_name:策略名
db_name:具体的数据库名
30d:保存30天,30天之前的数据将被删除
它具有各种时间参数,比如:h(小时),w(星期)
REPLICATION 1:副本个数,这里填1就可以了
DEFAULT 设为默认的策略

也可以通过如下命令修改和删策略:

ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
DROP RETENTION POLICY "rp_name" ON "db_name"

2、连续查询(Continuous Queries)

当数据超过保存策略里指定的时间之后,就会被删除。如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价)。这就需要InfluxDB提供的:连续查询(Continuous Queries)。

查看当前的查询策略

SHOW CONTINUOUS QUERIES

创建新的Continuous Queries

CREATE CONTINUOUS QUERY cq_30m ON testDB BEGIN SELECT mean(temperature) INTO weather30m FROM weather GROUP BY time(30m) END
注释如下:
cq_30m:连续查询的名字
testDB:具体的数据库名
mean(temperature): 算平均温度
weather: 当前表名
weather30m: 存新数据的表名
30m:时间间隔为30分钟

当我们插入新数据之后,通过SHOW MEASUREMENTS查询发现。可以发现数据库中多了一张名为weather30m(里面已经存着计算好的数据了)。这一切都是通过Continuous Queries自动完成的。

删除Continuous Queries

DROP CONTINUOUS QUERY <cq_name> ON <database_name>

四、RESTful 接口操作

插入及查询操作:

# code from www.361way.com
now=$(date '+%FT%T.000Z')
tomorrow=$(date -v +1d '+%FT%T.000Z')
echo "creating database"
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE foo"
echo "creating retention policy"
curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION INF REPLICATION 1 DEFAULT"
echo "inserting data"
curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$now\",\"fields\": {\"value\": 100}}]}" -H "Content-Type: application/json" http://localhost:8086/write
echo "inserting data"
curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$tomorrow\",\"fields\": {\"value\": 200}}]}" -H "Content-Type: application/json" http://localhost:8086/write
sleep 1
echo "querying data"
curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu"
echo "querying data"
curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu where time < now() + 10d"

GZIP压缩数据插入及查询:

# code from www.361way.com
echo "inserting data"
curl -v -i -H "Content-encoding: gzip" -H "Content-Type: application/json" -X POST -T foo.json.gz http://localhost:8086/write
rm foo.json.gz
echo "querying data with gzip encoding"
curl -v -G --compressed http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT sum(value) FROM \"foo\".\"bar\".cpu GROUP BY time(1h)"

还可以指定数据保存策略及表的各关键值插入:

echo "creating retention policy"
curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION 300d REPLICATION 3 DEFAULT"
curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"uswest"},"time": "2015-02-26T22:01:11.703Z","fields": {"rx": 2342,"tx": 9804}}]}' -H "Content-Type: application/json" http://localhost:8086/write
curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"useast"},"time": "2015-02-27T22:01:11.703Z","fields": {"rx": 4324,"tx": 7930}}]}' -H "Content-Type: application/json" http://localhost:8086/write

更多可以参考github上的测试内容。

无论是influx还是通过RESETful 参数进行查询,其还有pertty参数可以使输出的json格式更加美观 。除此之外,influx命令还有column、CSV等格式输出,influx命令支持通过import参数输入类csv类格式的数据。

五、influxdb.conf配置web管理

当前版本的influxdb,默认情况下未开启web管理功能。可以通过修改influxdb.conf文件中admin项的配置开启web管理界面,具体如下:

[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"

Influxdb相关概念及简单实用操作相关推荐

  1. ios13全选手势_iOS13系统5个简单实用的技巧 快速选择/三指操作/批量删除短信/文字转表情...

    iOS 13 已经发布一段时间,苹果带来了不少新内容和细节上的优化,一起来看看 iOS 13 还有哪些隐藏的小技巧,希望对大家有所帮助. iOS13系统5个简单实用的技巧: 快速选择文本 当您在编辑文 ...

  2. 简单实用的批量去除水印方法及操作步骤

    去除水印是经常要用到的一些功能.现在一起来看看简单实用的批量去除水印功能怎么操作. 我们先看一下视频是有水印的 百度搜索"视频剪辑高手"软件并下载打开. 选择批量剪辑视频区域 打开 ...

  3. 简单实用的添加字幕及去水印的方法及操作步骤

    去除水印和添加字幕是经常要用到的一些功能.现在一起来看看简单实用的批量去除水印和加字幕功能怎么操作. 我们先看一下视频是有水印的而且并没有什么字幕的 百度搜索"视频剪辑高手"软件并 ...

  4. 多功能工具箱微信小程序源码下载-操作简单实用流量主小程序

    这是一款多功能工具箱小程序! 目前由N款小功能组合成 比如: 图片拼接 九宫格切图 透明昵称 文字表情 等等上面说的只是一部分 该款小程序无需服务器与域名 使用微信开发者工具打开文件然后上传提交审核即 ...

  5. php简单实用的操作文件工具类(创建、移动、复制、删除)

    php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opend ...

  6. 分享一个动图制作软件,简单实用易操作,迅速得到你想要的GIF效果图

    有好东西应该和大家一起分享,发现一个简单实用的gif图制作软件:GifCam 大致讲下它的基本操作: 首先看下功能图:                          点击录制按钮即可开始录制属于你 ...

  7. excel转置怎么操作_Excel技巧分享:这几个小技巧简单实用,让你效率更高

    日常办公中,我们经常会用到Excel表格,但是很多人对于Excel表格的操作并不是特别的熟练,导致效率低下,又需要经常加班,那么该如何掌握Excel表格技巧呢?接下来,小盾就给大家分享五个简单Exce ...

  8. 一个简单实用的,基于EF的三层架构

    到底什么样的框架才是好框架呢?或许不同人有不同的看法.我个人觉一个好的框架,最重要的要是简单实用,能快速适开发,可维护性高(不会出现复制黏贴的代码),并能快速响应各种业务场景的变化的框架,同时性能不会 ...

  9. 『中级篇』k8s的NodePort类型Service以及Label的简单实用(68)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』k8s的NodePort类型Service以及Label的简单实用(68) 上次主要说了service的一种类型,c ...

最新文章

  1. 多线程并发:每个开发人员都应了解的内容
  2. UA PHYS515A 电磁理论III 静磁学问题3 静磁学问题的边界条件与标量势方法的应用
  3. 64. Minimum Path Sum 最小路径和
  4. 星期五基准功能Java
  5. BOM之navigator对象和用户代理检测
  6. Andriod Atom x86模拟器启动报错
  7. “模板”学习笔记(7)-----数组模板+对象数组举例
  8. Python获取本机所有网卡的MAC地址
  9. eclipse 3.7 search 报resource is out of sync with the file system 解决方法
  10. WinForm员工信息表
  11. python opencv 中文_OpenCV-Python在图片上输出中文
  12. 3des base64 java_java和c++中的DES\3DES\Base64
  13. mysql随机生成中文姓名_mysql 生成随机手机号和随机中文名-阿里云开发者社区
  14. 股票交易接口程序概述
  15. nagios监控数据库错误
  16. Mac外接4k显示器文字变小
  17. 一分钟学会如何给图片降噪,给图片降噪也可以很简单!
  18. mysql查询distinct_mysql中select distinct的用法
  19. C++ 类Pimpl手法
  20. SWPU Python123作业题汇总(持续更新)

热门文章

  1. ISTQB基础级考试心得
  2. 2017爱创课堂vue.js视频完整版
  3. 用PYTHON做一个简单的游戏脚本(基础,详细)
  4. 【爱情叙记】--刚闹完别扭
  5. 贝叶斯公式——假阳性问题
  6. 单片机交通灯灯c语言程序,51单片机用C语言实现交通灯(红绿灯)源程序
  7. 微商客源如何引流?坚持操作喜马拉雅日引50+粉丝
  8. 赠书:深入理解 Spring Cloud 与实战
  9. java求长方形的表面积程序_Android Studio实现长方体表面积计算器
  10. Vue 基础之常用内置指令