检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
(车牌号1,车牌号3),(通过的第1个收费站,通过的第2个收费站) 根据通过相同收费站的两辆车的车牌号聚合数据,如下。 (车牌号1,车牌号2),[(通过的第1个收费站,通过的第5个收费站),(通过的第2个收费站,通过的第6个收费站),(通过的第1个收费站,通过的第7个收费站),(通过的第3个收费站,通过的第8个收费站)]
BY (device, day); AggregateFunction类型的字段使用二进制存储,在写入数据时,需要调用*State函数;而在查询数据时,则需要调用相应的*Merge函数。其中,*表示定义时使用的聚合函数。 物化视图创建 CREATE MATERIALIZED VIEW
(车牌号1,车牌号3),(通过的第1个收费站,通过的第2个收费站) 根据通过相同收费站的两辆车的车牌号聚合数据,如下: (车牌号1,车牌号2),[(通过的第1个收费站,通过的第5个收费站),(通过的第2个收费站,通过的第6个收费站),(通过的第1个收费站,通过的第7个收费站),(通过的第3个收费站,通过的第8个收费站)]
ClickHouse物化视图设计 ClickHouse物化视图概述 ClickHouse普通物化视图设计 ClickHouse Projection设计 父主题: ClickHouse应用开发规范
(车牌号1,车牌号3),(通过的第1个收费站,通过的第2个收费站) 根据通过相同收费站的两辆车的车牌号聚合数据,如下: (车牌号1,车牌号2),[(通过的第1个收费站,通过的第5个收费站),(通过的第2个收费站,通过的第6个收费站),(通过的第1个收费站,通过的第7个收费站),(通过的第3个收费站,通过的第8个收费站)]
MergeTree引擎在建表的时候支持列字段和表级的TTL。 当列字段中的值过期时,ClickHouse会将其替换成数据类型的默认值。如果分区内,某一列的所有值均已过期,则ClickHouse会从文件系统中删除这个分区目录下的列文件。当表内的数据过期时,ClickHouse会删除所有对应的行。 在列上配置TTL:
ClickHouse索引设计 一级索引设计 在建表设计时指定主键字段的建议:按查询时最常使用且过滤性最高的字段作为主键。依次按照访问频度从高到低、维度基数从小到大来排列。数据是按照主键排序存储的,查询的时候,通过主键可以快速筛选数据,合理的主键设计,能够大大减少读取的数据量,提升查询性
如果保存多年数据,建议考虑使用月做分区,toYYYYMM(pt_d)。 综合考虑数据分区粒度、每个批次提交的数据量、数据的保存周期等因素,合理控制part数量。 父主题: ClickHouse宽表设计
ClickHouse宽表设计 ClickHouse宽表设计原则 ClickHouse表字段设计 ClickHouse本地表设计 ClickHouse分布式表设计 ClickHouse分区设计 ClickHouse索引设计 父主题: ClickHouse应用开发规范
SparkSQL天然与Hive集成,无需考虑元数据问题。该条建议针对的是通过Spark Datasource API或者Flin写Hudi表的场景,通过这两种方式写Hudi时需要增加向Hive同步元数据的配置项;该配置的目的是将Hudi表的元数据统一托管到Hive元数据服务中,为后续的跨引擎操作数据以及数据管理提供便利。
命中projection使用规则 Where条件必须是Projection定义中Group By的子集。 Group By必须是Projection定义中Group By的子集。 Select必须是Projection定义中Select的子集。 多表join场景不支持Projection特性,此种场景建议用普通物化视图实现。
据库中的系统表记录的是系统的配置、元数据等的信息数据。 业务在使用ClickHouse的时候,需要指定自己业务的数据库进行连接和使用,业务相关的表创建在自己业务库中,不要将业务的表创建在系统数据库中,避免对系统数据库造成不必要的影响。 命名规范设计规则 所有命名采用26个英文字母
ClickHouse表字段设计 规则 不允许用字符类型存放时间或日期类数据,尤其是需要对该日期字段进行运算或者比较的时候。 不允许用字符类型存放数值类型的数据,尤其是需要对该数值字段进行运算或者比较的时候。字符串的过滤效率相对于整型或者特定时间类型有下降。 建议 不建议表中存储过多的Nullab
ClickHouse数据库设计 ClickHouse DataBase设计 ClickHouse表引擎适用场景说明 父主题: ClickHouse应用开发规范
月份创建分区;近一天内的数据更新占比大,可以按照天进行分区。 采用Bucket索引,写入是通过主键Hash打散的,数据会均匀的写入到分区下每个桶。因为各个分区的数据量是会有波动的,分区下桶的个数设计一般会按照最大分区数据量计算,这样会出现越细粒度的分区,桶的个数会冗余越多。例如:
ClickHouse宽表设计原则 宽表设计原则 由于ClickHouse的宽表查询性能较优,且当前ClickHouse可支持上万列的宽表横向扩展。 在大部分场景下,有大表两表join以及多表join的场景,且多个join的表数据变化更新频率较低,这种情况,建议对多个表join查询
通过“AS”关联分布式表和本地表,保证分布式表的字段定义跟本地表一致。 分布式表引擎的参数说明: default_cluster:集群名称。 default:本地表所在库名。 my_table_local:本地表名。 rand():可选参数,分片键(sharding key),可以是表中一列的原始数据(如did),也可以是函数调用的结果。
基于简化使用的角度,针对大数据量的表,可以通过采用Bucket索引来避免状态后端的复杂调优。 如果Bucket索引+分区表的模式无法平衡Bueckt桶过大的问题,还是可以继续采用Flink状态索引,按照规范去优化对应的配置参数即可。 建议 基于Flink的流式写入的表,在数据量超
ClickHouse依赖服务设计 为了保证ClickHouse服务的稳定,需要提早规划好对于底层依赖服务的设计,主要是ZooKeeper,尤其是在使用replicated*系列表引擎的场景下。 ZooKeeper默认部署在MRS集群的Master节点,根据节点CPU和内存规格,调
从纵向来看,每个shard内部有多个副本组成,保证分片数据的高可靠性,以及计算的高可靠性。 数据分布设计 Shard数据分片均匀分布 建议用户的数据均匀分布到集群中的多个shard分片,如图1所示有3个分片。 假如有30 GB数据需要写入到集群中,需要将30 GB数据均匀切分后分别放到shard-1、s