美文网首页
influxdb1.X的CQ、RP实战

influxdb1.X的CQ、RP实战

作者: ShootHzj | 来源:发表于2021-08-14 23:36 被阅读0次

influx1.X的下采样数据和数据存留

大量参考翻译自 https://docs.influxdata.com/influxdb/v1.8/guides/downsample_and_retain/

InfluxDB 每秒可以处理数十万个数据点。 长时间处理这么多数据可能会引起存储问题。 一个自然的解决方案是对数据进行下采样; 将高精度原始数据仅保留有限的时间,并将较低精度的汇总数据存储更长时间。 本指南描述了如何使用 InfluxQL 自动化下采样数据和过期旧数据的过程。

influxdb 1.X有CQ和RP的概念,不过在influx2中,这两个概念都被替换掉了,不过还是很有必要学习了解一下这两个概念并感悟一下为什么在influx2替换掉了这两个概念

定义

  • Continuous query CQ 是influxQL中的一种查询语句,它自动地周期性地运行在数据库中。CQs 需要在select语句上执行聚合函数, 并且一定需要GROUP BY time()语句
  • Retention policy RP 是influxDB中地一部分数据结构,描述了数据在influxDB中存留的时间。InfluxDB根据服务器上的时间和数据上的时间,删除比RPDURATION更老的数据。一个数据库可以拥有多个RP,RP不能扩数据库。

样本数据

本部分使用虚构的实时数据以 10 秒的间隔跟踪通过电话和网站向餐厅订购的食品数量。 我们将此数据存储在名为 food_data 的数据库中、在measurement orders中的字段phonewebsite

样本

name: orders
------------
time                   phone   website
2016-05-10T23:18:00Z   10      30
2016-05-10T23:18:10Z   12      39
2016-05-10T23:18:20Z   11      56

目标

假设在长期运行中,我们只对以30分钟为周期的通过电话和网站的订单数感兴趣,在接下来,我们通过CQRP

  • 自动地将10秒为周期的解决方案数据聚合为30分钟为周期的数据
  • 自动地将2小时之前的10秒为周期的数据行删除
  • 自动地删除52周前地30分钟为周期地数据

数据库准备

我们在向food_data插入数据之前先做一些准备工作。原因是因为CQ只对最近的数据进行操作。

创建数据库

CREATE DATABASE "food_data"

创建2小时的RP

如果在写入数据的时候不指定RP,那么InfluxDB会使用默认的RP。由于我们想把每十秒写进来的数据自动使用2小时的RP(而不需要手动指定),我们将默认的RP修改成2h。

CREATE RETENTION POLICY "two_hours" ON "food_data" DURATION 2h REPLICATION 1 DEFAULT

这个语句在food_data中创建了一个名叫two_hours的RP。two_hours默认保留2小时的数据,并且是food_data数据库的默认RP

创建52周的RP

接下来我们创建一个52周的RP,用来存储每30分钟的数据。

CREATE RETENTION POLICY "a_year" ON "food_data" DURATION 52w REPLICATION 1

注意,这个RP并不是默认RP

创建CQ

现在我们已经设置了我们的 RP,我们想要创建一个连续查询 (CQ),它会自动定期将 10 秒采样数据下采样到 30 分钟采样,然后将这些结果存储在不同的measurement和不同的RP

使用CREATE CONTINUOUS QUERY语句来创建CQ

CREATE CONTINUOUS QUERY "cq_30m" ON "food_data" BEGIN
  SELECT mean("website") AS "mean_website",mean("phone") AS "mean_phone"
  INTO "a_year"."downsampled_orders"
  FROM "orders"
  GROUP BY time(30m)
END

不换行,用于复制

CREATE CONTINUOUS QUERY "cq_30m" ON "food_data" BEGIN SELECT mean("website") AS "mean_website",mean("phone") AS "mean_phone" INTO "a_year"."downsampled_orders" FROM "orders" GROUP BY time(30m) END

这个语句在food_data中创建了一个名为cq_30mCQcq_30m告诉influxdb计算在measurement orders中在DEFAULT RP two hours下的30分钟内的websitephone的平均值。并且还让influxdb将这些结果写到measurement downsampled_orders,并使用a_year的老化策略,字段名分别为mean_websitemean_phoneInfluxdb每30分钟运行一次前30分钟的数据

结果

有了CQRP,之后,我们就可以往数据库中写入数据了,让我们插入几条数据

INSERT orders phone=5,website=20
INSERT orders phone=5,website=21
INSERT orders phone=5,website=20
INSERT orders phone=2,website=4
image-20210814232112368

这个时候downsampled_orders还没有数据,我们需要等待它运行一段时间(半小时起步)

image-20210814231859435 image-20210814233440783

相关文章

  • influxdb1.X的CQ、RP实战

    influx1.X的下采样数据和数据存留 大量参考翻译自 https://docs.influxdata.com/...

  • 知道你一定会过得很好

    20110705,cq--km; 20140814,cq负你 20150123,cq 20180814,zt 分手...

  • 想要入手玩无线电,需要前期准备些什么?

    架好天线,打开电台,按下PPT,开始呼叫: CQ, CQ, CQ, this is BI4XWG, Bravo I...

  • iOS数据库之查找数据库表内容方法

    查找表CQxtstandard中,符合条件:CQ_ZPLX = %@ and CQ_DQDM = %@的数据,并且...

  • 产品经理入门学习大纲

    人人都是产品经理课程 : 点击查看详情(1)Axure RP原型实战(2)产品经理文档(3)15天AI产品经理入门...

  • CQ

    我今年20岁,应是在学校读书的时候,奈何天资愚钝后天又努力不够,18岁就已经出身社会,一路磕磕碰碰但也幸好有人给...

  • CQ

    “我与你,恰似半夏风,一场相遇如一场梦。 而后啊,你也不过是一枕黄粱。 如月光照过昨夜的湖面。 各自皎洁,各自珍重...

  • 29小时Axure高保真学习秘笈

    总述: 按照本秘笈使用《Axure RP8实战手册》,可以做到29小时以内了解Axure包括各种交互、动态面板、中...

  • 破产重整背后

    4月11日,CQ市能源投资集团及其下属永荣矿业等15家子公司,分别向CQ市第五中级F院申请破产重整。 CQ能投...

  • nvme linux driver学习之四SQ,CQ工作机制

    首先nvme sq和cq基础知识需要知道以下几点:(1)sq 和 cq 分别作为command request 和...

网友评论

      本文标题:influxdb1.X的CQ、RP实战

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