相遇之infuxdb(时下最流行的时序数据库之一)

1.InfluxDB介绍

1.1安装使用

下载地址

直接官网下载就好,非常简单。
https://influxdata.com/downloads/#influxdb

influxdb是这两年比较流行的时序数据库,是有go语言开发的.无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统。

安装

  sudo dpkg -i influxdbName.deb

启动

  sudo service influxdb start

使用

      启动成功之后,我们就可以开始使用influxDB啦!

命令行

     在命令行中直接输入influx,就可以管理数据库了。

  root@xtutu:~# influx

  Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.

  Connected to http://localhost:8086 version 0.10.0

  InfluxDB shell 0.10.0

  > show databases

  name: databases

  ---------------

  name

  _internal

  mydb

使用web页面来操作

在浏览器中输入localhost:8083 即可进入web管理页面。

 

创建一个数据库

  1. > CREATE DATABASE "testDB"

  2. > show databases

  3. name: databases

  4. ---------------

  5. name

  6. _internal

  7. mydb

  8. testDB

使用数据库

  1. > use testDB

  2. Using database testDB

现在我们就可以在这个数据库上进行各种操作了!

1.2名词解释

在InfluxDB中有不少名词,初学者非常容易搞混,这一节主要就是对这些名词进行解释。

场景定义

我们有一个数据库名为testDB,里面有一张表weather用于记录:多个地区在几组海拔下的一天的温度变化,所以表中有以下字段:

时间 time

温度 temperature

湿度 humidity

地区 area

海拔 altitude

与传统数据库中的名词做比较

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

InfluxDB中独有的一些念概

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

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

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

所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。

比如有如下数据:

  1. > select* from weather

  2. name: weather

  3. -------------

  4. time altitude area humidity temperature

  5. 1456386985094000000 1000 北 18 17

  6. 1456386985094000000 5000 上 20 47

  7. 1456386985094000000 5000 北 26 68

  8. 1456386985094000000 1000 广 17 83

  9. 1456387267668000000 1000 上 12 77

  10. 1456387267668000000 1000 北 16 20

  11. 1456387267668000000 5000 广 -3 66

  12. 1456387267668000000 5000 上 19 60

它的series为:

  1. > show series from weather

  2. name: weather

  3. -------------

  4. _key altitude area

  5. weather,altitude=1000,area=北 1000 北

  6. weather,altitude=5000,area=北 5000 北

  7. weather,altitude=5000,area=上 5000 上

  8. weather,altitude=1000,area=广 1000 广

  9. weather,altitude=1000,area=上 1000 上

  10. weather,altitude=5000,area=广 5000 广

 

2.基本操作

本章将介绍InfluxDB中的一些基本操作,包括数据的增删改查、数据库与表的操作等。 

2.1增

在名词解释这一章节中,我们看到在weather中的有不少数据。

本节将演示下如何为数据库插入数据。

通过命令行

  1. use testDB

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

这样,我们就向数据库中添加了一条数据。

通过Http接口

InfluxDB提供了Http的API接口,所以我们也可以通过下面的方式来插入数据。

  1. curl -i -XPOST 'http://localhost:8086/write?db=testDB' --data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4'

Line Protocol格式

插入数据的格式似乎比较奇怪,这是因为influxDB储存数据所采用的是Line Protocol格式。

在上面两个插入数据的方法中,都有一样的部分。

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

 

其中:

weather : 表名

altitude=1000,area=北 : tag

temperature=11,humidity=-4 :field

2.2删与改

在InfluxDB中并没有提供数据的删除与修改方法。
不过我们可以通过数据保存策略(Retention Policies)来实现删除。

2.3查

本节将演示下查询数据的一些常用方法。

通过命令行

  1. use testDB

  2. # 查询最新的三条数据

  3. SELECT * FROM weather ORDER BY time DESC LIMIT 3

通过Http接口

  1. curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"


InfluxDB是支持类SQL语句的,具体的查询语法都差不多,就不再详细描述了。

2.4数据库与表的操作

以下语句都可以直接在InfluxDB的Web管理界面中调用

  1. # 创建数据库

  2. CREATE DATABASE "db_name"

  3. # 显示所有数据库

  4. SHOW DATABASES

  5. # 删除数据库

  6. DROP DATABASE "db_name"

  7.  
  8. # 使用数据库

  9. USE mydb

  10.  
  11. # 显示该数据库中的表

  12. SHOW MEASUREMENTS

  13.  
  14. # 创建表

  15. # 直接在插入数据的时候指定表名(weather就是表名)

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

  17.  
  18. # 删除表

  19. DROP MEASUREMENT "measurementName"

2.5数据保存策略(Retention Policies)

InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies。
主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除。

查看当前数据库的Retention Policies

  1. SHOW RETENTION POLICIES ON "testDB"

创建新的Retention Policies

  1. CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT

其中:

rp_name:策略名

db_name:具体的数据库名

30d:保存30天,30天之前的数据将被删除

它具有各种时间参数,比如:h(小时),w(星期)

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

DEFAULT 设为默认的策略

修改Retention Policies

  1. ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT

删除Retention Policies

  1. DROP RETENTION POLICY "rp_name"

具体效果,大家可以直接自己在测试数据库上试验

2.6连续查询(Continuous Queries)

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

这就需要InfluxDB提供的:连续查询(Continuous Queries)。

当前数据库的Continuous Queries

  1. # 这条命令得在命令行下输入,在web管理界面不能显示。

  2. SHOW CONTINUOUS QUERIES

创建新的Continuous Queries

CONTINUOUS QUERY cq_30m ON testDB BEGIN SELECT mean(temperature) INTO weather30m FROM weather GROUP BY time(30m) END

其中:

  1. cq_30m:连续查询的名字
  2. testDB:具体的数据库名
  3. mean(temperature): 算平均温度
  4. weather: 当前表名
  5. weather30m: 存新数据的表名
  6. 30m:时间间隔为30分钟

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

  1. > SHOW MEASUREMENTS

  2. name: measurements

  3. ------------------

  4. name

  5. weather

  6. weather30m

删除Continuous Queries

DROP CONTINUOUS QUERY <cq_name> ON <database_name>

具体效果,大家可以直接自己在测试数据库上试验

2.7用户管理

以下语句都可以直接在InfluxDB的Web管理界面中调用

  1. # 显示用户

  2. SHOW USERS

  3. # 创建用户

  4. CREATE USER "username" WITH PASSWORD 'password'

  5. # 创建管理员权限的用户

  6. CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES

  7.  
  8. # 删除用户

  9. DROP USER "username"

3.Grafana简单使用

下载安装

Grafana也是用GO语言写的,无任何依赖,安装非常简单。

启动

  1. sudo service grafana-server start

运行

直接访问:http://your_ip:3000

登入

默认帐号:admin
默认密码:admin

添加数据库

在Data Sources中添加数据库testDB

其中user和password,如果没有设置过,可以随便填下。
保存之后,可以通过Test Connection来测试,是否填写正确。

创建Dashboard

点击New按钮就可以了。

添加一个图形界面

为界面关联数据

  1. 选择testDB数据库
  2. 添加查询语句
  3. 完美显示!记得保存

转载自:https://blog.csdn.net/lufeisan/article/details/53018309

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值