influxdb是目前比较流行的时间序列数据库。linux
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
它有三大特性:web
同时,它有如下几大特色:sql
注:本文使用的influxdb version是1.0.2docker
在讲解具体的安装步骤以前,先说说influxdb的两个http端口:8083和8086shell
OS X数据库
brew update brew install influxdb
Docker Imageless
docker pull influxdb
Ubuntu & Debiancurl
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.0.2_amd64.deb sudo dpkg -i influxdb_1.0.2_amd64.deb
RedHat & CentOS分布式
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2.x86_64.rpm sudo yum localinstall influxdb-1.0.2.x86_64.rpm
Standalone Linux Binaries (64-bit)函数
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_amd64.tar.gz tar xvfz influxdb-1.0.2_linux_amd64.tar.gz
Standalone Linux Binaries (32-bit)
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_i386.tar.gz tar xvfz influxdb-1.0.2_linux_i386.tar.gz
Standalone Linux Binaries (ARM)
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_armhf.tar.gz tar xvfz influxdb-1.0.2_linux_armhf.tar.gz
How to start?
安装完以后,如何启动呢?
sudo service influxdb start
到这里influxdb安装启动完成,能够访问influxdb管理页面:本地管理页面,该版本没有登陆用户及密码,能够自行设置读写的用户名和密码。
如何在命令行使用
安装完毕以后,如何在命令行使用呢?
在具体的讲解influxdb的相关操做以前先说说influxdb的一些专有名词,这些名词表明什么。
Point由时间戳(time)、数据(field)和标签(tags)组成。
还有一个重要的名词:series
全部在数据库中的数据,都须要经过图表来表示,series表示这个表里面的全部的数据能够在图标上画成几条线(注:线条的个数由tags排列组合计算出来)
举个简单的小栗子:
有以下数据:
它的series为:
数据库与表的操做
能够直接在web管理页面作操做,固然也能够命令行。
#建立数据库
create database "db_name" #显示全部的数据库 show databases #删除数据库 drop database "db_name" #使用数据库 use db_name #显示该数据库中全部的表 show measurements #建立表,直接在插入数据的时候指定表名 insert test,host=127.0.0.1,monitor_name=test count=1 #删除表 drop measurement "measurement_name"
增
向数据库中插入数据。
use testDb insert test,host=127.0.0.1,monitor_name=test count=1
curl -i -XPOST 'http://127.0.0.1:8086/write?db=testDb' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'
读者看到这里可能会观察到插入的数据的格式貌似比较奇怪,这是由于influxDB存储数据采用的是Line Protocol格式。那么何谓Line Protoco格式?
Line Protocol格式:写入数据库的Point的固定格式。
在上面的两种插入数据的方法中都有这样的一部分:
test,host=127.0.0.1,monitor_name=test count=1
其中:
想对此格式有详细的了解参见官方文档
查
查询数据库中的数据。
select * from test order by time desc
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDb" --data-urlencode "q=select * from test order by time desc"
influxDB是支持类sql语句的,具体的查询语法都差很少,这里就再也不作详细的赘述了。
数据保存策略(Retention Policies)
influxDB是没有提供直接删除数据记录的方法,可是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
show retention policies on "db_name"
create retention policy "rp_name" on "db_name" duration 3w replication 1 default
alter retention policy "rp_name" on "db_name" duration 30d default
drop retention policy "rp_name"
show continuous queries
create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
drop continous query cp_name on db_name
#显示用户
show users #建立用户 create user "username" with password 'password' #建立管理员权限用户create user "username" with password 'password' with all privileges #删除用户 drop user "username"