influxdb是目前比较流行的时间序列数据库。

  • 何谓时间序列数据库?
    什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。但是,有什么数据不包含Timestamp呢?几乎所有的数据其实都可以打上一个Timestamp字段。时间序列数据的更重要的一个属性是如何去查询它,包括数据的过滤,计算等等。

Influxdb

Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
它有三大特性:

  1. 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
  2. 度量(Metrics):对实时大量数据进行计算;
  3. 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

同时,它有以下几大特点:

  • schemaless(无结构),可以是任意数量的列;
  • min, max, sum, count, mean, median 一系列函数,方便统计;
  • Native HTTP API, 内置http支持,使用http读写;
  • Powerful Query Language 类似sql;
  • Built-in Explorer 自带管理工具。

Influxdb安装


注:本文使用的influxdb version是1.0.2

在讲解具体的安装步骤之前,先说说influxdb的两个http端口:8083和8086

  • port 8083:管理页面端口,访问localhost:8083可以进入你本机的influxdb管理页面;
  • port 8086:http连接influxdb client端口,一般使用该端口往本机的influxdb读写数据。

OS X

brew update
brew install influxdb

Docker Image


docker pull influxdb

Ubuntu & Debian

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基本操作


名词解释

在具体的讲解influxdb的相关操作之前先说说influxdb的一些专有名词,这些名词代表什么。

influxdb相关名词

  • database:数据库;
  • measurement:数据库中的表;
  • points:表里面的一行数据。

influxDB中独有的一些概念

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

  • time:每条数据记录的时间,也是数据库自动生成的主索引;
  • fields:各种记录的值;
  • tags:各种有索引的属性。

还有一个重要的名词:series
所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)
举个简单的小栗子:
有如下数据:

error_time

它的series为:

error_time_series

influxdb基本操作

  • 数据库与表的操作
    可以直接在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
  • 通过http接口
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

其中:

  1. test:表名;
  2. host=127.0.0.1,monitor_name=test:tag;
  3. count=1:field

想对此格式有详细的了解参见官方文档


  • 查询数据库中的数据。

    • 通过命令行

select * from test order by time desc
  • 通过http接口

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是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。

    • 查看当前数据库Retention Policies

show retention policies on "db_name"
retention_policies

  • 创建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default

-  rp_name:策略名;
- db_name:具体的数据库名;
- 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
- replication 1:副本个数,一般为1就可以了;
- default:设置为默认策略
  • 修改Retention Policies

alter retention policy "rp_name" on "db_name" duration 30d default
  • 删除Retention Policies

drop retention policy "rp_name"
  • 连续查询(Continous Queries)
    当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
    influxdb提供了联系查询,可以做数据统计采样。

    • 查看数据库的Continous Queries

show continuous queries
continuous_queries.

  • 创建新的Continous 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
- cq_name:连续查询名字;
- db_name:数据库名字;
- sum(count):计算总和;
- table_name:当前表名;
- new_table_name:存新的数据的表名;
- 30m:时间间隔为30分钟
  • 删除Continous Queries

drop continous query cp_name on db_name
  • 用户管理
    可以直接在web管理页面做操作,也可以命令行。

#显示用户
show users
#创建用户
create user "username" with password 'password'
#创建管理员权限用户create user "username" with password 'password' with all privileges
#删除用户
drop user "username"

InfluxDB数据库相关推荐

  1. 12.通过HTTP API对InfluxDB数据库作操作

    12.通过HTTP API对InfluxDB数据库作操作 12.1.删除表 12.2.创建库 12.3.删除库 12.4.添加数据 12.5.以文件格式添加数据 12.通过HTTP API对Influ ...

  2. python连接influxdb_python 访问 InfluxDB 数据库

    我们开发了一个基于 Telegrapg+InfluxDB+chonograph+kapacitor 的气象站监控演示系统. 通过modular-2 连接了一个气象站传感器,采集温度,湿度,PM2.5, ...

  3. influxdb java api使用_java使用influxDB数据库的详细源码

    此文实例给亲们分享了java使用influxDB数据库的具体代码,供大家参考,具体内容如下 1.pom.xml中导入jar包依赖 org.influxdb influxdb-java 2.5 2.编写 ...

  4. 蓝牙网关应用-通过ACSERVER将蓝牙测量数据保存到Influxdb数据库中并通过grafana生成图表

    蓝牙网关应用之通过grafana生成小米温度计曲线图 准备环境 启动influxdb 启动grafana 配置acserver 配置网关 配置数据解析类型 连接小米温湿度计 配置grafana 金桔蓝 ...

  5. influxdb 插入数据_脚本采集数据插入到influxdb数据库里

    #!/bin/bash # 定时收集java服务metrics # curl http://10.7.16.42:6301/metrics demo # 参数: post_influxdb_write ...

  6. influxdb数据过期_为什么腾讯QQ的大数据平台选择了InfluxDB数据库?

    导读:本文带你了解一个开源的.高性能的时序型数据库--InfluxDB. 作者:韩健 来源:华章科技 00 为什么QQ要选择InfluxDB? 从2016年起,笔者在腾讯公司负责QQ后台的海量服务分布 ...

  7. InfluxDB【InfluxDB数据库操作】

    InfluxDB数据库连接操作类 /** Copyright (c) 2010-2020. */package com.sjasoft.cloud.admin.inflixdbconn;import ...

  8. 初识influxdb数据库(一)

    1.什么是InfluxDB ①InfluxDB简介 InfluxDB是一个由InfluxData开发的开源时序型数据.它由Go写成,无需外部依赖,着力于高性能地查询与存储时序型数据,支持类sql查询语 ...

  9. Docker安装启动influxDB数据库及建库查询基本操作

最新文章

  1. 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
  2. golang常见内存泄漏
  3. 数据库中id类型和varchar类型的区别
  4. scikit-image 几个案例(下)
  5. IOS 调用系统照相机和相册
  6. Python判断变量类型
  7. javascript-运算符
  8. JSP中动态includ与静态includ的区别
  9. Java编译器和解释器
  10. RecyclerView 之notifyDataSetChanged的暴躁
  11. [707]Apache NiFi安装及简单使用
  12. MAC 无法重启或关机
  13. s20赛季服务器维护,王者荣耀S20赛季什么时候结束 S20赛季具体结束日期
  14. LeetCode:数组(排列组合,二分查找I,二分查找II)
  15. 并发与性能调优(后续补充)
  16. Iptables DNAT实现broadcast与unicast之间相互映射
  17. 2013手机游戏引擎趋势:竞争升级
  18. 软件测试工程师笔试面试题带答案(一)
  19. p2p 网络基础 网络高并发
  20. 阿里云服务器是什么/阿里云服务器是干嘛用的

热门文章

  1. python opencv 烟雾检测
  2. 传媒人应该具备的素质:批判 理性 正气
  3. OSPF的LSA和网络类型
  4. dataguard跨平台linux,Dataguard从库性能的监控
  5. 华院计算 | 葛利普和他的燕园归宿
  6. not a valid identifier解决
  7. 避免word中表格导入excel表格中变形的问题
  8. Mixlab 【AI创造营】 百度飞桨创意赛 参赛项目介绍
  9. 怀旧服服务器在线人数查询,魔兽世界怀旧服如何查询人口普查?
  10. android 百度天气api,9.1 百度免费天气API介绍