华为云gaussdb(for influx)揭秘第七期:最佳实践之数据建模-4008云顶国际网站
01 数据模型与关键概念
-
database
与mysql中database概念相同。
创建命令:create database “mydb”。
用户权限、数据保留策略都以database为粒度设置。比如赋予用户对“mydb”数据库只读权限:grant read on mydb to username。
-
measurement
与mysql中table概念类似。所不同的是,gaussdb(for influx)属于schemaless,measurement不需要提前创建,也不需要设计表中的字段和类型。写入数据时自动创建measurement,字段可以任意新增和减少,但要求相同字段的数据类型必须一致。
-
retention policy(rp)
数据保留策略,是关系型数据库中不存在的概念,专为时序场景设计,意为指定数据在数据库中的最长保存时间,过期数据会自动被清理。
-
tag
数据源标识,只支持string类型
-
field
采集指标,支持string,float,int,bool类型
-
line protocol(数据模型)
如图所示,写数据到gaussdb(for influx),单条数据由measurement、tag_key、tag_value、field_key、field_value、timestamp 6部分组成。
-
point(点)
point1:
point2:
即,一条数据包含多少field key,则可以简单认为存在多少point。在gaussdb(for influx)中,可以一条数据包含一个point,也可以包含多个point。
-
series(时间线)
在gaussdb(for influx)里,我们将一个指标 一组tag组合称为一条时间线。在一条时间线下面,连续时间点的采样数据则为时序数据。比如有数据:
monitorinfo,area=”葡萄花”,device=”钻机a”,pressure=1.8,1650443961100400200
monitorinfo,area=”葡萄花”,device=”钻机b”,pressure=1.6,1650443961100400200
monitorinfo,area=”榆树林”,device=”钻机b”,pressure=1.7,1650443961100400200
monitorinfo,area=”榆树林”,device=”钻机a”,pressure=1.5,1650443961100400200
表示4条时间线,分别是:
葡萄花油田的钻机a上的压力传感器(pressure)
葡萄花油田的钻机b上的压力传感器(pressure)
榆树林油田的钻机b上的压力传感器(pressure)
榆树林油田的钻机a上的压力传感器(pressure)
02 数据建模之最佳实践
通常,数据建模是为了让查询更简单、更高效。对于大多数使用情形,我们建议使用以下设计准则:
1、合理设计tag 和field
-
tag只支持字符串类型,数值和布尔类型数据应该被设计为field;
-
将常用查询条件和分组条件设计为tag;
因为tag会创建索引,而field则没有索引。比如在业务中,经常会查询某一台机器的平均cpu利用率:
select mean(cpu)
from monitor
where host=“192.168.1.1” and time > now() – 1h
或者查询风电场每台风力发电机每小时的平均发电量:
select mean(elect)
from monitor
where farm_id=“737f738a-bd63” and time > now() – 24h
group by time(1h),device_id
则应该将上述查询语句中的 host、farm_id、device_id 设置为tag,前提是字符串类型才能被设为tag。
-
time属于内置关键字,不能作为tag_key和field_key; -
使用influxql函数(max、min、count等)的字段,作为field存储。
-
不使用保留关键字作为tag和field的key(名称); -
tag和field不使用相同名称,否则会出现不可预料的问题; -
tag和field名称尽量简短清晰,可以节约index内存空间,同时会让查询更加高效; -
避免一个tag中包含多层意思,比如machine = “192.168.2.1-ubuntu”,包含ip地址和操作系统名称,建议拆分为两个tag:host和os; -
建议将变化小的数据设置为tag,比如进程名称可以设为tag,而进程号则建议设置为field。
3、避免超过节点规格所能承受的时间线数量
时间线过度超过限制,会引起性能急剧下降,可能会影响业务运行,需要考虑对节点扩容。
03 总结
04 结束
欢迎加入4008云顶国际集团!
云数据库创新lab(成都、北京)简历投递邮箱:xiangyu9@huawei.com
华为云时空数据库团队(西安、深圳)简历投递邮箱:yujiandong@huawei.com
- 点赞
- 收藏
- 关注作者
评论(0)