InfuxDB简介

InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
三大特性:
Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等)
Metrics(度量):你可以实时对大量数据进行计算
Eevents(事件):它支持任意的事件数据
特点:
schemaless(无结构),可以是任意数量的列
Scalable
min, max, sum, count, mean, median 一系列函数,方便统计
Native HTTP API, 内置http支持,使用http读写
Powerful Query Language 类似sql
Built-in Explorer 自带管理工具

基本概念

传统数据库 Infuxdb
数据库 database
measurement
记录 point

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

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

** series**
表中所有的tags的组合数据,每个series代表一组数据,参照图表的概念

> show series from h2o_feet
key
---
h2o_feet,location=coyote_creek
h2o_feet,location=santa_monica

基本语法

数据库操作

数据库创建

CREATE DATABASE  [WITH [DURATION ] [REPLICATION ] [SHARD DURATION ] [NAME ]]
  • DURATION 保存时间
  • REPLICATION 复制数量(集群)
  • SHARD DURATION 每个分片持续的时间(时间段内所有Point保存在该分片中),SHARD为InfuxDB存储单元
  • NAME 数据保留策略名称

如果不指定WITH语句,默认使用autogen策略:保存时间永久,分片时间1周,复制数量1

数据库删除

DROP DATABASE 

数据删除

DROP SERIES FROM  WHERE =''
或
DELETE FROM  WHERE [=''] | [

删除的条件只能是tag,field不支持。其中DELETE支持time条件,支持正则表达式语法。

数据保留策略(Retention Policies)

InfluxDB每秒可以处理成千上万条数据,要将这些数据全部保存下来会占用大量的存储空间,有时我们可能并不需要将所有历史数据进行存储,因此,InfluxDB推出了数据保留策略(Retention Policies),用来让我们自定义数据的保留时间。可以指定多个保留策略,如需访问不是默认策略的访问策略需显示指定策略名称。
创建

CREATE RETENTION POLICY  ON  DURATION  REPLICATION  [SHARD DURATION ] [DEFAULT]
  • DURATION 保存时间
  • REPLICATION 复制数量(集群)
  • SHARD DURATION 每个分片持续的时间(时间段内所有Point保存在该分片中),SHARD为InfuxDB存储单元
    如果未指定该值,将按照如下规则创建:
Retention Policy’s DURATION Shard Group Duration
< 2 days 1 hour
>= 2 days and <= 6 months 1 day
> 6 months 7 days

最小为1小时,如果小于1小时,系统会默认指定为1小时

  • DEFAULT 是否默认

修改

ALTER RETENTION POLICY  ON  DURATION  REPLICATION  SHARD DURATION  DEFAULT

删除

DROP RETENTION POLICY  ON 

连续查询(Continuous Queries)

通过数据保留策略我们可以指定数据存活时间,但超过时间后数据就会被删除,我们不想删除数据,又不想保留所有数据(数据量太大),那我们就可以通过连续查询保留我们想要的数据(比如降低精度存储,原先采样是5s,可以改成5m)
基础语法

CREATE CONTINUOUS QUERY  ON 
BEGIN
  SELECT  INTO  FROM  [WHERE ] GROUP BY time()[,]
END

例子

> SELECT "passengers","complaints" FROM bus_data
name: bus_data
--------------
time                   passengers   complaints
2016-08-28T07:00:00Z   5            9
2016-08-28T07:15:00Z   8            9
2016-08-28T07:30:00Z   8            9
2016-08-28T07:45:00Z   7            9
2016-08-28T08:00:00Z   8            9
2016-08-28T08:15:00Z   15           7
2016-08-28T08:30:00Z   15           7
2016-08-28T08:45:00Z   17           7
2016-08-28T09:00:00Z   20           7
##执行按每1小时保存
> CREATE CONTINUOUS QUERY "cq_basic" ON "transportation" \
BEGIN \
  SELECT mean("passengers") INTO "average_passengers" FROM "bus_data" GROUP BY time(1h) \
END
##结果
> SELECT * FROM "average_passengers"
name: average_passengers
------------------------
time                   mean
2016-08-28T07:00:00Z   7
2016-08-28T08:00:00Z   13.75

插入(INSERT)

INSERT [,=...] =[,=...] [unix-nano-timestamp]

你可能感兴趣的:(InfuxDB简介)