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"