zoukankan      html  css  js  c++  java
  • InfluxDB学习(四):InfluxDB数据库retention、shard、shardgroup

    一. retention policy(pr)

    数据保留策略提供了一个简单高效的方法用来清除InfluxDB数据库中的过期数据,一旦数据超过过期时间,数据会自动从InfluxDB中清除,而过期数据清除的时间单位以shard group的duration为单位

    Influx中每个新建的数据库都会有一个对应的数据保留策略(retention policy),该策略用来管理该数据库中的数据过期时间,如果没有指定策略,那么该数据库会有一个默认的策略,如下所示

    > create database db01
    > show retention policies on db01
    name    duration shardGroupDuration replicaN default
    ----    -------- ------------------ -------- -------
    autogen 0s       168h0m0s           1        true

    新建一个数据库时,也会自动创建一个默认的策略“autogen”,duration表示该数据的过期时间,0s表示永不过期。

    创建retention policy的语句如下:

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

    该参数依次为 

    <retention_policy_name>:保留策略名称

    <database_name>:为哪个数据库创建保留策略

    <duration>:该保留策略对应的数据过期时间

    <REPLICATION>:复制因子,开源的InfluxDB单机环境永远为1

    <SHARD DURATION>:分片组的默认时长

    DEFAULT:是否为默认策略,如果是,就代替数据库的默认策略“autogen”

    例如,我们创建一个过期时间为24h的保留策略

    > create retention policy store_24h on db01 duration 24h replication 1

     此时db01数据库除了一个默认的保留策略“autogen”外,还有一个我们新建的保留策略,这里需要注意的是,一个数据库的保留策略可以有多个,但是只能有一个是默认的。

    > show retention policies on db01
    name      duration shardGroupDuration replicaN default
    ----      -------- ------------------ -------- -------
    autogen   0s       168h0m0s           1        true
    store_24h 24h0m0s  1h0m0s             1        false

     修改一个数据库的默认保留策略,语法格式为:

    > ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT

     将刚才新建的保留策略设置为db01的默认策略

    > alter retention policy "store_24h" on "db01" default
    > show retention policies on db01
    name      duration shardGroupDuration replicaN default
    ----      -------- ------------------ -------- -------
    autogen   0s       168h0m0s           1        false
    store_24h 24h0m0s  1h0m0s             1        true

     以后存入db01数据库的数据仅仅保留一天,即24个小时。

    二. shard

    shard是InfluxDB存储引擎的实现,负责数据的编码存储、读写服务等。将InfluxDB中时间序列化的数据按照时间的先后顺序存入到shard中,每个shard中都负责InfluxDB中一部分的数据存储工作,并以tsm文件的表现形式存储在物理磁盘上,每个存放了数据的shard都属于一个shard group。

    三. shard group

    shard group可以理解为存放shard的容器,所有的shard在逻辑上都属于这个shard group,每个shard group中的shard都有一个对应的时间跨度和过期时间,每一个shard group都有一个默认的时间跨度,叫做shard group duration

    Retention Policy’s DURATIONShard Group Duration
    < 2 days 1 hour
    >= 2 days and <= 6 months 1 day
    > 6 months 7 days

    三. 三者之间的关系

    在一个RP中,如果指定的保留时间为24小时,那么每个shard的duration为1小时,即每个shard的时间跨度为1小时,那么总共会有24个跨度为1小时的shard,在触发数据的RP后,删除最早时间跨度的shard。

    例如,我们在mydb数据库中指定保留策略为24小时

    > show retention policies on mydb
    name          duration shardGroupDuration replicaN default
    ----          -------- ------------------ -------- -------
    autogen       0s       168h0m0s           1        false
    keep_24_hours 24h0m0s  1h0m0s             1        true

    那么此时shard group中对应就会存在24个shard,每次到达过期时间时,删除最早的shard,并生成一个新的shard

    > show shard groups
    name: shard groups
    id database  retention_policy start_time           end_time             expiry_time
    -- --------  ---------------- ----------           --------             -----------
    1 mydb      keep_24_hours    2020-04-24T19:00:00Z 2020-04-24T20:00:00Z 2020-04-25T20:00:00Z
    2 mydb      keep_24_hours    2020-04-24T20:00:00Z 2020-04-24T21:00:00Z 2020-04-25T21:00:00Z
    3 mydb      keep_24_hours    2020-04-24T21:00:00Z 2020-04-24T22:00:00Z 2020-04-25T22:00:00Z
    4 mydb      keep_24_hours    2020-04-24T22:00:00Z 2020-04-24T23:00:00Z 2020-04-25T23:00:00Z
    5 mydb      keep_24_hours    2020-04-24T23:00:00Z 2020-04-25T00:00:00Z 2020-04-26T00:00:00Z
    6 mydb      keep_24_hours    2020-04-25T00:00:00Z 2020-04-25T01:00:00Z 2020-04-26T01:00:00Z
    7 mydb      keep_24_hours    2020-04-25T01:00:00Z 2020-04-25T02:00:00Z 2020-04-26T02:00:00Z
    8 mydb      keep_24_hours    2020-04-25T02:00:00Z 2020-04-25T03:00:00Z 2020-04-26T03:00:00Z
    9 mydb      keep_24_hours    2020-04-25T03:00:00Z 2020-04-25T04:00:00Z 2020-04-26T04:00:00Z
    10 mydb      keep_24_hours    2020-04-25T04:00:00Z 2020-04-25T05:00:00Z 2020-04-26T05:00:00Z
    11 mydb      keep_24_hours    2020-04-25T05:00:00Z 2020-04-25T06:00:00Z 2020-04-26T06:00:00Z
    12 mydb      keep_24_hours    2020-04-25T06:00:00Z 2020-04-25T07:00:00Z 2020-04-26T07:00:00Z
    13 mydb      keep_24_hours    2020-04-25T07:00:00Z 2020-04-25T08:00:00Z 2020-04-26T08:00:00Z
    14 mydb      keep_24_hours    2020-04-25T08:00:00Z 2020-04-25T09:00:00Z 2020-04-26T09:00:00Z
    15 mydb      keep_24_hours    2020-04-25T09:00:00Z 2020-04-25T10:00:00Z 2020-04-26T10:00:00Z
    16 mydb      keep_24_hours    2020-04-25T10:00:00Z 2020-04-25T11:00:00Z 2020-04-26T11:00:00Z
    17 mydb      keep_24_hours    2020-04-25T11:00:00Z 2020-04-25T12:00:00Z 2020-04-26T12:00:00Z
    18 mydb      keep_24_hours    2020-04-25T12:00:00Z 2020-04-25T13:00:00Z 2020-04-26T13:00:00Z
    29 mydb      keep_24_hours    2020-04-25T13:00:00Z 2020-04-25T14:00:00Z 2020-04-26T14:00:00Z
    20 mydb      keep_24_hours    2020-04-25T14:00:00Z 2020-04-25T15:00:00Z 2020-04-26T15:00:00Z
    21 mydb      keep_24_hours    2020-04-25T15:00:00Z 2020-04-25T16:00:00Z 2020-04-26T16:00:00Z
    22 mydb      keep_24_hours    2020-04-25T16:00:00Z 2020-04-25T17:00:00Z 2020-04-26T17:00:00Z
    23 mydb      keep_24_hours    2020-04-25T17:00:00Z 2020-04-25T18:00:00Z 2020-04-26T17:00:00Z
    24 mydb      keep_24_hours    2020-04-25T18:00:00Z 2020-04-25T19:00:00Z 2020-04-26T17:00:00Z
  • 相关阅读:
    控制反转和依赖注入
    共识机制是什么?
    实用拜占庭容错算法PBFT
    三种框架对比react vue 和Angular对比
    go语言学习笔记
    激活方法总结
    钱包助记词
    简历中存在的问题的处理
    why we use Symbols in Hash
    compact过滤数组中的nil
  • 原文地址:https://www.cnblogs.com/ilifeilong/p/12746149.html
Copyright © 2011-2022 走看看