数据库及数据模式管理

InfluxQL提供了一整套管理命令,包括数据管理和保留策略的管理。

下面的示例使用InfluxDB的命令行界面(CLI)。 您还可以使用HTTP API执行命令; 只需向/query发送GET请求,并将该命令包含在URL参数q中。

注意:如果启用了身份验证,只有管理员可以执行本页上列出的大部分命令。在学习的时候,可以不用开启身份验证。


数据管理


创建数据库


语法

CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]

语法描述

人有名字,数据库也有名字,CREATE DATABASE需要一个数据库名称作为参数。

WITHDURATIONREPLICATIONSHARD DURATIONNAME在中括号里面,它们是可选的,可以没有。

这些关键字用来创建与数据库相关联的单个保留策略。如果您没有在WITH之后指定其中一个子句,将默认为autogen保留策略。创建的保留策略将自动用作数据库的默认保留策略。

一个成功的CREATE DATABASE查询返回一个空的结果。

友情提示:如果您尝试创建已存在的数据库,InfluxDB什么都不做,也不会返回错误。


例子


例一:创建数据库
> CREATE DATABASE "NOAA_water_database"
>

该语句创建了一个叫做NOAA_water_database的数据库,默认InfluxDB也会创建autogen保留策略,并和数据库NOAA_water_database关联起来。


例二:创建一个有特定保留策略的数据库
> CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"
>

该语句创建了一个叫做NOAA_water_database的数据库,并且创建了liquid作为数据库的默认保留策略,其持续时间为3天,副本数是1,shard group的持续时间为一个小时。

是不是有点难理解?xxx


删除数据库

DROP DATABASE从指定数据库删除所有的数据,以及 measurement,series,continuous queries, 和retention policies。

友情提示:删除数据库需要谨慎,不过学习的时候,大家尽量的删,以后到生成环境,没有机会删除了。

语法为:

DROP DATABASE <database_name>

一个成功的DROP DATABASE查询返回一个空的结果。如果您尝试删除不存在的数据库,InfluxDB什么都不做,也不会返回错误。

数据库名不用加引号,DROP DATABASE中的DATABASE是单数形式哦。


用DROP从索引中删除series

DROP SERIES删除一个数据库里的一个series的所有数据,并且从索引中删除series。

DROP SERIES不支持WHERE中带时间间隔。

该查询采用以下形式,您必须指定FROM子句或WHERE子句:

DROP SERIES FROM <measurement_name[,measurement_name]> WHERE <tag_key>='<tag_value>'

从单个measurement删除所有series:

> DROP SERIES FROM "h2o_feet"

从单个measurement删除指定tag的series:

> DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'

从数据库删除有指定tag的所有measurement中的所有数据:

> DROP SERIES WHERE "location" = 'santa_monica'

用DELETE删除series

DELETE删除数据库中的measurement中的所有点。与DROP SERIES不同,它不会从索引中删除series,并且它支持WHERE子句中的时间间隔。

该查询采用以下格式,必须包含FROM子句或WHERE子句,或两者都有:

DELETE FROM <measurement_name> WHERE [<tag_key>='<tag_value>'] | [<time interval>]

删除measurementh2o_feet的所有相关数据:

> DELETE FROM "h2o_feet"

删除measurementh2o_quality并且tagrandtag等于3的所有数据:

> DELETE FROM "h2o_quality" WHERE "randtag" = '3'

删除数据库中2016年一月一号之前的所有数据:

> DELETE WHERE time < '2016-01-01'

一个成功的DELETE返回一个空的结果。 关于DELETE的注意事项:

  • 当指定measurement名称时,DELETEFROM子句中支持正则表达式,并在指定tag时支持WHERE子句中的正则表达式。
  • DELETE不支持WHERE子句中的field。
  • 如果你需要删除之后的数据点,则必须指定DELETE SERIES的时间间隔,因为其默认运行的时间为time <now()

删除measurement

DROP MEASUREMENT删除指定measurement的所有数据和series,并且从索引中删除measurement。

该语法格式为:

DROP MEASUREMENT <measurement_name>

注意:DROP MEASUREMENT删除measurement中的所有数据和series,但是不会删除相关的continuous queries。

目前,InfluxDB不支持在DROP MEASUREMENT中使用正则表达式,具体在#4275中查看详情。


删除shard

DORP SHARD删除一个shard,也会从metastore中删除shard。格式如下:

DROP SHARD <shard_id_number>

保留策略管理

以下部分介绍如何创建,更改和删除保留策略。 请注意,创建数据库时,InfluxDB会自动创建一个名为autogen的保留策略,该保留策略保留时间为无限。您可以重命名该保留策略或在配置文件中禁用其自动创建。


创建保留策略


语法

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]

语法描述

DURATION

DURATION子句确定InfluxDB保留数据的时间。 <duration>是持续时间字符串或INF(无限)。 保留策略的最短持续时间为1小时,最大持续时间为INF。

REPLICATION

REPLICATION子句确定每个点的多少独立副本存储在集群中,其中n是数据节点的数量。该子句不能用于单节点实例。

SHARD DURATION

SHARD DURATION子句确定shard group覆盖的时间范围。 <duration>是一个持续时间字符串,不支持INF(无限)持续时间。此设置是可选的。 默认情况下,shard group持续时间由保留策略的DURATION决定:

保留策略的持续时间 shard group的持续时间
< 2天 1小时
>= 2天并<=6个月 1天
> 6个月 7天

最小允许SHARD GROUP DURATION为1小时。 如果CREATE RETENTION POLICY查询尝试将SHARD GROUP DURATION设置为小于1小时且大于0,则InfluxDB会自动将SHARD GROUP DURATION设置为1h。 如果CREATE RETENTION POLICY查询尝试将SHARD GROUP DURATION设置为0,InfluxDB会根据上面列出的默认设置自动设置SHARD GROUP DURATION

DEFAULT

将新的保留策略设置为数据库的默认保留策略。此设置是可选的。


例子


创建一个保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1
>

该语句给数据库NOAA_water_database创建一个保留策略one_day_only,持续时间为1天,副本数为1。


创建一个默认的保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 23h60m REPLICATION 1 DEFAULT
>

该查询创建与上述示例中相同的保留策略,但将其设置为数据库的默认保留策略。

成功的CREATE RETENTION POLICY执行返回为空。如果您尝试创建与已存在的保留策略相同的保留策略,InfluxDB不会返回错误。 如果您尝试创建与现有保留策略名称相同但具有不同属性的保留策略,InfluxDB会返回错误。

注意:也可以在CREATE DATABASE时指定一个新的保留策略。


修改保留策略

ALTER RETENTION POLICY形式如下,你必须至少指定一个属性:DURATION, REPLICATION, SHARD DURATION,或者DEFAULT:

ALTER RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> SHARD DURATION <duration> DEFAULT

现在我们来创建一个保留策略what_is_time其持续时间为两天:

> CREATE RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 2d REPLICATION 1
>

修改what_is_time的持续时间为3个星期,shard group的持续时间为30分钟,并将其作为数据库NOAA_water_database的默认保留策略:

> ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 30m DEFAULT
>

在这个例子中,what_is_time将保留其原始副本数为1。


删除保留策略

删除指定保留策略的所有measurement和数据:

DROP RETENTION POLICY <retention_policy_name> ON <database_name>

成功的DROP RETENTION POLICY返回一个空的结果。如果您尝试删除不存在的保留策略,InfluxDB不会返回错误。