美文网首页
时序数据存储系统 InfluxDB

时序数据存储系统 InfluxDB

作者: SlowGO | 来源:发表于2019-01-08 19:01 被阅读8次

InfluxDB 是一款开源的用于存储时序数据的存储系统。

由于时序数据是随时间变化而产生的,每分每秒都会产生数据,而且这个数据量还会不断积累,最终将形成一个庞大的数据集。InfluxDB天生就用来存储这些大数据,同时还能对外提供高效的数据查询功能。

InfluxDB 非常适合记录指标数据、事件数据,并执行分析。

特性:

  • 内置 http api,无需写任何服务端代码
  • 数据可以加标签,能够灵活的查询
  • 类似 SQL 的查询语言
  • 安装和管理非常简单
  • 解决实时查询需求,每个数据一进来就被编入索引,100ms 内就可以被查询

项目地址:

https://github.com/influxdata/influxdb

启动:

$ docker run \
    -d \
    -p 8086:8086 \
    -v ~/influxdb:/var/lib/influxdb \
    --name influxdb \
    influxdb

进入容器内部,登录客户端:

$ docker exec -it influxdb influx

Connected to http://localhost:8086 version 1.7.2
InfluxDB shell version: 1.7.2
Enter an InfluxQL query
>

查看数据库:

> show databases;
name: databases
name
----
_internal

现在只有一个名为 _internal 的数据库,它是内部数据库。

新建数据库:

> create database mydb;
>
> show databases;
name: databases
name
----
_internal
mydb

可以看到新建成功了。

使用新建的库:

> use mydb;
Using database mydb

插入时序数据:

> insert cpu,host=server01,region=uswest load=42 1434055562000000000
> insert cpu,host=server02,region=uswest load=78 1434055562000000000
> insert cpu,host=server03,region=useast load=15.4 1434055562000000000

# 时间戳可以不加,插入时自动生成
> insert cpu,host=server01,region=uswest load=33

insert 命令所插入的数据中包含3个部分:

  1. measurement - 量度,类似关系型数据库中的数据表(如cpu)【只能有一个】
  2. tag - 标签,类似关系型数据库中的索引,用 key=value 结构表示,每个tag用 “,” 分隔(如host=server01,region=uswest)【可以有多个】
  3. field - 字段,类似关系型数据库中的字段,field 用 key=value 结构表示(如load=42)

查询:

> SELECT * FROM cpu WHERE host='server01' AND time < now() - 1d
name: cpu
time                host     load region
----                ----     ---- ------
1434055562000000000 server01 42   uswest

统计:

> SELECT mean(load) FROM cpu WHERE region='uswest'
name: cpu
time mean
---- ----
0    51

从 cpu 度量中 根据标签查询。

InfluxDB也提供了便于使用的REST API,例如:

curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server01,region=uswest load=42 1434055562000000000'

curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server02,region=uswest load=78 1434055562000000000'

curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server03,region=useast load=15.4 1434055562000000000'

curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT * FROM cpu WHERE host='server01' AND time < now() - 1d"

curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT mean(load) FROM cpu WHERE region='uswest'"

文档地址:http://docs.influxdata.com/influxdb/

相关文章

网友评论

      本文标题:时序数据存储系统 InfluxDB

      本文链接:https://www.haomeiwen.com/subject/xgbbrqtx.html