程序员

InfluxDB 简介

2019-04-14  本文已影响0人  jouyouyun

InfluxDB 是一个时间序列数据库(TSDB), 被设计用来处理高写入、高查询负载,是 TICK 的一部分。

TSDB 是针对时间戳或时间序列数据进行优化的数据库,专门为处理带有时间戳的度量和事件或度量而构建的。
而时间序列数据可以是随时间跟踪、监视、下采样和聚合的度量或事件,如服务器指标、应用程序性能、网络数据、传感器数据以及许多其他类型的分析数据。

关键特性

注意: 开源版本的 InfluxDB 只运行在单个节点上,如需更好的性能或避免单点故障,请使用企业版。

安装

其他请参见:Installing InfluxDB

配置

InfluxDB 的配置文件为: /etc/influxdb/influxdb.conf ,选项详情请参见:Configuration Settings,这里就不在赘述。

基本操作

服务相关

数据库

写入查询

InfluxDB 中使用 measurement 表示表, tags 表示表的元数据, fields 表示数据。
表的 scheme 不用定义, null 值也不会被存储。

tag 可理解为表中需要索引的列, field 是不需要索引的列, point 表示一条记录。
tags 之间或 fields 之间使用 ',' 分割, 而 tagsfields 之间使用空格分割。

SERIES

SERIESmeasurement,<tag1>,<tag2>... 的集合,如之前的写入的 SERIES 就是 cpu_load,machine,region

查看语法:

SHOW SERIES FROM [measurement],[tag1],[tag2]...

FROM 可以不加,如:

删除

持续查询

连续查询(Continuous Queries 简称 CQ)是 InfluxQL 对实时数据自动周期运行的查询,然后把查询结果写入到指定的 measurement 中。
语法如下:

CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
BEGIN
  <cq_query>
END

删除语法: DROP CONTINUOUS QUERY <cq_name> ON <database_name>

cq_query 需要一个函数,一个 INTO 子句和一个 GROUP BY time() 子句:

SELECT <function[s]> INTO <destination_measurement> FROM <measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<tag_key[s]>]

注意:WHERE 子句中, cq_query 不需要时间范围。 InfluxDB 在执行 CQ 时自动生成 cq_query 的时间范围。
cq_queryWHERE 子句中的任何用户指定的时间范围将被系统忽略。

如创建一个一分钟采样一次 cpu_load 并写入 cpu_load_1min 表的连续查询:

CREATE CONTINUOUS QUERY "cpu_load_1min" ON "learn_test"
BEGIN
    SELECT mean("value") INTO "cpu_load_1min" FROM "cpu_load" GROUP BY time(1m)
END

value 将以 mean 为名保存在 cpu_load_1min 中。

更多高级用法参加: InfluxQL Continuous Queries

保留策略

InfluxDB 是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
可以有多个 RP 并存,但 default 表明默认策略。

更多用法参见: Database management using InfluxQL

HTTP 接口

/query

数据主要使用 query 接口查询,下面给出一些常见用法,而更多用法参见: Querying data with the HTTP API

/write

发送 POST 请求是写入数据的主要方式,,下面给出一些常见用法,而更多用法参见: Writing data with the HTTP API

上一篇 下一篇

猜你喜欢

热点阅读