实战1¶
InfluxDB每秒可以处理数十万的数据点。如果要长时间地存储大量的数据,对于存储会是很大的压力。一个很自然的方式就是对数据进行采样,对于高精度的裸数据存储较短的时间,而对于低精度的的数据可以保存得久一些甚至永久保存。
表结构:
数据库为food_data
measurement为orders
fields分别为phone和website
实例:
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
目标:
假定在长时间的运行中,我们只关心每三十分钟通过手机和网站订购的平均数量:
1. 自动将十秒间隔数据聚合到30分钟的间隔数据
2. 自动删除两个小时以上的原始10秒间隔数据
3. 自动删除超过52周的30分钟间隔数据
步骤:
1. 创建数据库
> CREATE DATABASE "food_data"
2. 创建一个两个小时的默认RP
> CREATE RETENTION POLICY "two_hours" ON "food_data" DURATION 2h REPLICATION 1 DEFAULT
3. 创建一个保留52周数据的RP
> CREATE RETENTION POLICY "a_year" ON "food_data" DURATION 52w REPLICATION 1
4. 创建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
结果:
> SELECT * FROM "orders" LIMIT 5
name: orders
---------
time phone website
2016-05-13T23:00:00Z 10 30
2016-05-13T23:00:10Z 12 39
2016-05-13T23:00:20Z 11 56
2016-05-13T23:00:30Z 8 34
2016-05-13T23:00:40Z 17 32
> SELECT * FROM "a_year"."downsampled_orders" LIMIT 5
name: downsampled_orders
---------------------
time mean_phone mean_website
2016-05-13T15:00:00Z 12 23
2016-05-13T15:30:00Z 13 32
2016-05-13T16:00:00Z 19 21
2016-05-13T16:30:00Z 3 26
2016-05-13T17:00:00Z 4 23
结论:
使用RPs和CQs的组合,我们已经成功地创建的数据库并保存高精度的裸数据较短的时间,而保存高精度的数据更长时间
现在我们对这些特性的工作有了大概的了解,我们推荐到CQs和RPs去看更详细的文档。