攻城狮之路

InfluxDB简介

2019-03-06  本文已影响0人  YangSmokey

InfluxDB是一个开源分布式的时间序列、事件和指标数据库。使用 GoLand 编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

influxDB MySQL 描述
database database 数据库
measuremen table 数据表
points row 数据行

InfluxDB中独有的概念

Point由时间戳(time)、数据(field)、标签(tags)组成。
Point相当于传统数据库里的一行数据,如下表所示:

Point 描述
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)
tags 各种有索引的属性

从概念上讲,您可以将 measurement 视为一个SQL表,其中主索引始终是时间。 tags并且fields是表中的有效列。 tags被编入索引,而fields不是。不同之处在于,使用InfluxDB,您可以进行数百万次测量,您不必预先定义模式,也不会存储空值。

入门实践

root@a0bfadf454e6:/# ./usr/bin/influx
Connected to http://localhost:8086 version 1.7.4
InfluxDB shell version: 1.7.4
Enter an InfluxQL query
>

显示所有数据库:

> SHOW DATABASES
name: databases
name
----
_internal
TestDataBase
DeviceManage

创建数据库:

CREATE DATABASE "db_name"

删除数据库:

DROP DATABASE "db_name"

新增一条数据:

语法格式:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
INSERT Device,host=Server_1,region=ck value=740

以下几行都是可以写入InfluxDB的点的示例:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

使用数据库:

> USE TestDataBase
Using database TestDataBase

显示数据库中所有数据表:

> SHOW MEASUREMENTS
name: measurements
name
----
Device

显示数据表中所有数据:

> SELECT * FROM "Device"
name: Device
time                host     region value
----                ----     ------ -----
1551838714809273800 Server_1 zh     510
1551838773182374400 Server_1 ck     740
1551838784114047000 Server_1 sz     880
1551838793649884400 Server_1 df     245
1551838808490581100 Server_1 bj     543
1551839343592639700 Server_1 kd     324
1551839352626367200 Server_1 cc     674
1551839361132222700 Server_1 gk     932
1551839370771752200 Server_1 kk     633

警告:在大型数据库上使用*不带LIMIT子句可能会导致性能问题。您可以使用Ctrl+C取消响应时间过长的查询。

> SELECT * FROM /.*/ LIMIT 1
> SELECT * FROM /.*/ WHERE "value" > 0.9

实例:

# 查询最新的三条数据
SELECT * FROM "Device" ORDER BY time DESC LIMIT 3

在InfluxDB中并没有提供数据的删除与修改方法。不过我们可以通过数据保存策略(Retention Policies)来实现删除。

查看当前数据库的Retention Policies:

SHOW RETENTION POLICIES ON "DataBase_Name"

创建新的Retention Policies:

CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT
  1. rp_name:策略名
  2. db_name:具体的数据库名
  3. 30d:保存30天,30天之前的数据将被删除
  4. 它具有各种时间参数,比如:h(小时),w(星期)
  5. REPLICATION 1:副本个数,这里填1就可以了
  6. DEFAULT 设为默认的策略

修改Retention Policies:

ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT

删除Retention Policies:

DROP RETENTION POLICY "rp_name" ON "db_name"

删除数据表:

DROP MEASUREMENT "measurementName"
上一篇下一篇

猜你喜欢

热点阅读