InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖
其主要特色功能
- 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
- 可度量性:你可以实时对大量数据进行计算
- 基于事件:它支持任意的事件数据
InfluxDB安装
一,下载InfluxDB(windows版本)
https://portal.influxdata.com/downloads
点击按钮可看到各版本下载
我们可以根据我们的需要来选择相应的版本下载,在这里我们选择windows binaries 版本下载,直接将下载地址复制到浏览器中即可下载。
influxdb各个版本稍有不同,新版本8083web端管理已经被取代(需配合其他产品才能使用,个人觉得web端对于学习influxdb还是很有帮助的,可惜被去掉了)
二,安装
InfluxDB是绿色版,因此并不需要安装,只需要解压到相应的目录即可。
三,运行
打开命令窗口后,cd到主目录运行如下命令:
influxd.exe -config influxdb.conf
四,客户端
我们先用InfluxDB客户端测试下InfluxDB是否正常运行,保持启动InfluxDB服务端的cmd窗口运行,然后再在InfluxDB目录下启动一个cmd窗口。
输入influx.exe命令然后回车,程序会默认连接本地的InfluxDB服务端。
然后输入命令 show databases;
可以看到如下输出:
五,创建一个数据库
InfluxDB采用的是一种类似sql的语法,所以很多时候他的语法与传统的数据库的语法是类似的,例如创建数据库使用的语法如下:
create databases testDB
InlfuxDB 名词解释
在上一个部门中,已经建立了一个名为testDB的数据库。在之后的演示中,都将在这个数据库上操作。
在InfluxDB中有不少名词,初学者非常容易搞混,这一节主要就是对这些名词进行解释
一,场景定义
我们有一个数据库名为testDB,里面有一张表weather用于记录:多个地区在几组海拔下的一天的温度变化,所以表中有以下字段:
- 时间 time
- 温度 temperature
- 湿度 humidity
- 地区 area
- 海拔 altitude
二,与传统数据库中的名词做比较
+-----------------------+-----------------------------
| influxDB中的名词 | 传统数据库中的概念
+-----------------------+-----------------------------
| database |数据库
+-----------------------+-----------------------------
| measurement |数据库中的表
+-----------------------+-----------------------------
| points |表里面的一行数据
+-----------------------+-----------------------------
三,InfluxDB中独有的一些念概
Point由时间戳(time)、数据(field)、标签(tags)组成。
+-------------+--------------------------------------------------------------
| Point属性 | 传统数据库中的概念
+-------------+--------------------------------------------------------------
| time |每个数据记录时间,是数据库中的主索引(会自动生成)
+-------------+--------------------------------------------------------------
| fields |各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
+-------------+--------------------------------------------------------------
| tags |各种有索引的属性:地区,海拔
+-------------+--------------------------------------------------------------
这里不得不提另一个名词:series:
所有在数据库中的数据,都需要通过图表来展示,而这个 series 表示这个表里面的数据,可以在图表上画成几条线:通过 tags 排列组合算出来。
比如有如下数据:
> select* from weather
name: weather
-------------
time altitude area humidity temperature
1456386985094000000 1000 北 18 17
1456386985094000000 5000 上 20 47
1456386985094000000 5000 北 26 68
1456386985094000000 1000 广 17 83
1456387267668000000 1000 上 12 77
1456387267668000000 1000 北 16 20
1456387267668000000 5000 广 -3 66
1456387267668000000 5000 上 19 60
它的 series 为:
> show series from weather
name: weather
-------------
_key altitude area
weather,altitude=1000,area=北 1000 北
weather,altitude=5000,area=北 5000 北
weather,altitude=5000,area=上 5000 上
weather,altitude=1000,area=广 1000 广
weather,altitude=1000,area=上 1000 上
weather,altitude=5000,area=广 5000 广
基本操作
InfluxDB提供三种操作方式:
- 客户端命令行方式
- HTTP API接口
- 各语言API库
今天主要以命令行为例,为大家介绍下InfluxDB的基本操作,HTTP API接口和各种语言API库会在以后的文章中为大家详细介绍。
一,数据库操作
1)显示数据库:
show databases
show databases
2)新建数据库:
create database test
create database test
3)删除数据库:
drop database test
drop database test
4)使用数据库:
use testDB
二、InfluxDB数据表操作
在 InfluxDB 当中,并没有表(table)这个概念,取而代之的是MEASUREMENTS,MEASUREMENTS 的功能与传统数据库中的表一致,因此我们也可以将 MEASUREMENTS 称为 InfluxDB 中的表。
1)显示所有表
> SHOW MEASUREMENTS
name: measurements
------------------
name
weather
2)新建表
InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。如下所示:
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
InfluxDB 储存数据所采用的是 Line Protocol 格式。
其中:
- weather : 表名
- altitude=1000,area=北 : tag
- temperature=11,humidity=-4 :field
3)删除表
> drop measurement weather
> show measurements
三、数据操作
1)增加数据
增加数据采用 insert 的方式,要注意的是 InfluxDB 的 insert
中,表名与数据之间用逗号(,)分隔, tag 和 field 之间用 空格分隔,多个 tag 或者多个 field 之间用逗号(,)分隔。
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
> select * from weather
name: weather
time altitude area humidity temperature
---- -------- ---- -------- -----------
1514863641453356700 1000 北 -4 11
在这条语句中,weather是表名,altitude=1000 ,area = 北 是tag,属于索引,humidity =-4,temperature=11是field。
2)查询数据
查询语句与SQL一样,在此不再赘述。
3)修改和删除数据
InfluxDB属于时序数据库,没有提供修改和删除数据的方法。
但是删除可以通过InfluxDB的数据保存策略 Retention Policies 来实现这个会在以后的文章中讲到。
四,series操作
series表示这个表里面的数据,可以在图表上画成几条线,series主要通过tags排列组合算出来。
我们可以查询表的series,如下所示:
> show series from weather
key
---
weather,altitude=1000,area=北
>
五,界面操作
InfluxDB还提供了管理界面,大大降低了入门难度,在启动了InfluxDB服务之后,直接输入 <IP>:8083 即可访问界面。界面如下图所示:
以下语句都可以直接在InfluxDB的Web管理界面中调用
# 创建数据库
CREATE DATABASE "db_name"
# 显示所有数据库
SHOW DATABASES
# 删除数据库
DROP DATABASE "db_name"
# 使用数据库
USE mydb
# 显示该数据库中的表
SHOW MEASUREMENTS
# 创建表
# 直接在插入数据的时候指定表名(weather就是表名)
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
# 删除表
DROP MEASUREMENT "measurementName"
注意:低版本的InfluxDB自带web界面,本文下载的最新1.4.2则没有web界面,之前下载的1.2及1.3.5都有web界面,如果没有请注意配置文件 influxdb.conf 是否有允许web访问
网友评论