物理建表 本章节主要介绍如果进行物理建表。 物理表 物理表是指按照一定规则和方法,将物理表中所定义的实体、属性、属性约束、关系等要素转换为数据库软件所能够识别的表关系图(Table Relationship Diagram)的一种物理描述。 可视化建模: 前提条件 需要完成主题规划和数仓分层设计信息配置后,才能进行物理建模操作,主题划分和数仓分层设计请参见数仓主题规划与数仓分层设计。 需要完成数据源接入,才可进行物理建模操作。 使用流程 1. 登录数据中台,单击上侧导航栏的数据建模>物理建表,进入物理表页面。 2、创建物理表 a.在物理表页面,鼠标点击新建图标,创建物理表。 3、在“新建物理表”页面,根据页面提示完成相关配置。 a.填写基本配置参数。 参数名称 说明 所属主题 选择所属的主题信息 数据源 选择处于已发布状态的数据源 表中文名 以中文、英文、数字、下划线,且以中文或英文开头,最少4字符,最多64字符 表英文名 以英文、数字、下划线组成,且以英文开头,最少4字符,最多64字符表英文名 表类型 物理表支持以下表类型: 表:表是数据库中用于存储数据的物理结构,它由行和列组成,每一行代表一个记录,每一列代表一个字段。当需要长期存储数据,且数据需要频繁更新和查询时,选择表。 视图:视图是基于一个或多个表的虚拟表,它不存储数据,而是通过SQL查询语句动态生成数据,需要提供数据的抽象层,简化用户查询时,选择视图。 关联逻辑模型 选择物理表所需关联的逻辑模型 关联逻辑实体 关联当前【关联逻辑模型】中生效的逻辑实体 分区类型 当数据库类型是DM、可选如下分区类型: 范围分区(Range Partition):是根据表中某个列或多个列的值的范围来创建分区。应用场景为时间序列数据和数值范围数据。 列表分区(List Partition):列表分区是通过指定表中某个列的离散值集来创建分区,应用场景为地区或分类数据、状态或类型数据 当数据库类型是GaussDB、可选如下分区类型 Range:根据分区键的值范围将数据映射到分区,适用于时间序列数据,如按日期范围分区。 list:通过指定分区键的离散值列表来控制数据映射到分区,适用于已知离散值的场景,如按特定分类或状态分区。 hash:基于分区键使用哈希算法将数据均匀映射到分区,适用于数据分布均匀且无明显分区键的场景。 当数据库类型是Doris、可选如下分区类型 Range(范围分区):根据指定列的值范围进行分区,适用于数据具有连续数值范围的场景。 List(列表分区):根据指定列的离散值列表进行分区,适用于数据具有离散值集合的场景。 是否外部表 当数据库类型是Hive、需选是否外部表信息 用于指定Hive表是否为外部表。外部表允许用户访问存储在Hive外部的文件系统中的数据,而不必将其移动到Hive的默认存储位置. 文件格式 当数据库类型是Hive、需选文件格式信息 RCFILE:列式存储格式,支持压缩,适用于Hive分析。 TEXTFILE:行式存储,默认编码UTF8,简单通用。 GBKTEXTFILE:行式存储,GBK编码,适合中文数据。 SEQUENCEFILE:二进制存储,支持压缩,效率高。 PARQUET:列式存储,支持复杂数据类型,查询优化。 ORC:列式存储,高效压缩,适合大规模数据分析。 列分隔符 当数据库类型是Hive、需定义列分隔符信息 指定Hive表中字段值之间的分隔方式,以便正确解析行式存储文件中的数据 压缩类型 当数据库类型是Hive、需定义压缩类型信息 压缩类型配置用于指定数据存储时采用的压缩算法,以减少存储空间和提高I/O效率 当数据库类型是KingBase、需选压缩类型信息。 (5,5)压缩算法:性能与压缩比相对均衡的压缩模式 (3,1)压缩算法:压缩率最大的压缩模式。 表类型 当数据库类型是KingBase、需选择如下表类型。 复制表:数据完整存放在各个主机上,适用于配置表、字典表等数据量小的表。 哈希表:数据按hash策略分布存储与不同主机上,以实现分布式存储和计算 当数据库类型是Doris、需选择如下表类型。 Aggregate:聚合表,用于存储聚合后的数据,适用于快速查询统计结果。 Unique:唯一表,保证表中每一行数据的唯一性,适用于需要去重的数据存储。 Duplicate:重复表,允许表中存在重复数据,适用于存储原始数据,不进行去重处理。 Nocopies表 当数据库类型是KingBase、需选Nocopies表信息。 0:表示该表是复制表,即在数据库集群中,该表的数据会复制到所有的节点上,以保证数据的高可用性。 1:表示该表是非复制表,即在数据库集群中,该表的数据只存储在创建表的节点上,不会复制到其他节点,适用于存储不经常访问或不需要高可用性的数据。 行列模式 当数据库类型是KingBase、需选行列模式信息。 行存储:数据整行存储,适用于经常需要关注整行数据的OLTP(在线联机事务处理系统 。 哈希表:数据按hash策略分布存储与不同主机上,以实现分布式存储和计算) TTL 当数据库类型是kafka、需填TTL信息。 TTL用于设置Kafka主题中消息的存活时间,超过此时间的消息将被自动删除。 单位是天(day)、小时(hours)或分钟(minutes) 分区个数 当数据库类型是kafka、需填分区个数信息。 分区个数的作用是提高并行处理能力和消息吞吐量,分区数越多,可同时处理的消费者和生产者请求就越多。对于小型集群(少于6个broker),可以选择是broker数量的3倍;对于大型集群(超过12个broker),可以选择是broker数量的2倍。 当前分区 当数据库类型是kafka、需填当前分区信息。 指定创建主题(topic)时的初始分区数量,如果没有指定,则使用集群配置的默认值,默认的当前分区数值取决于Kafka集群的配置 备份数 当数据库类型是kafka、需填备份数信息。 备份数(Replication Factor):是指定每个分区的副本数量,以提高数据的可靠性和容错能力 数据类型 当数据库类型是kafka、需填数据类型信息。 json:用于指定消息体为JSON格式,这是一种轻量级的数据交换格式。 json数组:用于指定消息体为JSON数组格式,允许单个消息包含多个JSON对象,适用于批量处理数据的场景。 Csv:用于指定消息体为CSV格式,其中的数据通常由纯文本组成,字段由逗号分隔,适用于存储表格数据的场景。 字符集 当数据库类型是kafka、需填写字符集信息。 f8:指定使用UTF8字符集,是一种广泛使用的字符编码,能够表示任何Unicode字符,适用于国际化场景 gbk:指定使用GBK字符集,是一种用于简体中文的字符编码,适用于涉及简体中文字符的场景 结构类型 当数据库类型是kafka、需选择结构类型。 单一模式:消息体只包含单一结构的数据,如单个JSON对象或CSV记录,适用于简单的数据模型。 复合模式:消息体包含复合结构的数据,如JSON数组或嵌套JSON对象,适用于复杂的数据模型,可以包含多个记录或字段。 表引擎 当数据库类型是ClickHouse、需选择如下表引擎信息。 MergeTree:一种高效的列式存储引擎,适用于处理大量数据的写入和快速查询,支持数据自动合并以优化存储和查询性能。 ReplacingMergeTree:类似于MergeTree,但具有去重功能,自动删除具有相同主键的旧记录,保留最新的记录。 TinyLog:轻量级的日志引擎,适用于小规模数据的写入,不支持索引,查询性能不如MergeTree。 Log:简单的行式存储引擎,适用于快速写入和简单查询,不支持复杂的查询操作,数据存储为纯文本格式。 当数据库类型是Doris、需选择如下表引擎信息。 OLAP:由Doris负责数据管理和存储,适用于分析型查询。 分桶类型 当数据库类型是Doris、需填分桶类型信息。 "hash"分桶:即根据哈希值将数据均匀分配到不同的桶中,以实现负载均衡 分桶数量 当数据库类型是Doris、需填分桶数量信息。 自动分桶:默认选择"auto"让系统根据数据量和查询模式自动决定最优的分桶数量。 手动分桶:支持用户手动设置分桶数,分桶数量的最小值为 15000。 拓展属性 当数据库类型是Doris、需填写拓展属性。 拓展属性:允许用户为表设置额外的配置选项,如副本数量、存储介质和数据冷却时间等,以满足特定的性能和存储需求。 b.在“物理表属性”页面添加所需要的物理表字段属性,物理表字段属性参数说明参考。 参数名称 说明 英文名称 以英文、数字、下划线组成,且以英文开头,最少4字符,最多64字符。 属性名 以中文、英文、数字、下划线,且以中文或英文开头,最少4字符,最多64字符。 数据类型 设置属性的数据类型。 数据标准 选择一个已发布数据标准与逻辑实体属性关联 主键 表中唯一标识每条记录的字段或字段组合 分区 选中表示基于该字段值进行数据分区 不为空 选中表示该字段不可为空 索引信息 当数据库类型是DM、需填写索引信息。 无索引:不配置索引。 唯一索引:要求索引列的值在表中唯一,用于确保数据的唯一性,提高查询效率。 组合索引:在表的多个字段上建立的索引,适用于需要同时在多个字段上进行查询过滤的场景,可以提高多字段联合查询的效率。 加密方式 当数据库类型是Hive、需填写加密方式信息。 AESENC:通过AESENCRYPT函数实现,适用于快速加密大量敏感数据,如用户信息和财务数据 。 SM4ENC:是一种对称加密算法,适用于需要符合国家标准和法规要求的场景,如政府数据、金融数据等。 日期表达式 当数据库类型是kafka、需填写日期表达式信息。 用于定义Kafka消息中日期字段的格式,例如:yyyyMMdd 选择器表达式 当数据库类型是kafka、需填写选择器表达式信息。 jsonpath:使用JSONPath表达式从JSON格式的消息中提取特定字段,适用于处理JSON消息。 xpath:使用XPath表达式从XML格式的消息中提取数据,适用于处理XML消息。 列表下标:通过指定列表的下标来提取数组中的特定元素,适用于处理包含数组的数据结构。 分布排序键 当数据库类型是ClickHouse、需设置分布排序键。 分布排序键”(Distribution Key):用于指定数据在分布式表中的分布方式,通常选择一个或多个列作为分布键,以确保数据按照这些列的值分布到不同的节点上,从而优化查询性能和负载均衡。 分桶字段 当数据库类型是Dorise、需设置分桶字段。 设置该字段为分桶字段,这个字段的值将影响数据在不同桶中的分布,从而对查询性能和负载均衡产生影响。 聚合key 当数据库类型是Dorise、需设置聚合key字段。 设置改字段为聚合字段,这些字段决定了数据的聚合方式,如SUM、MAX、MIN等,适用于数据预聚合场景 聚类类型 当数据库类型是Dorise、需选择聚合类型。 SUM:对数值列进行求和,适用于需要计算总量或累计值的场景。 REPLACE:用于替换Value列的值。当新数据的Key列与已有数据的Key列相同时,新数据的Value列会替换掉旧数据的Value列 MAX:找出数值列的最大值,适用于需要确定最大值的场景。 MIN:找出数值列的最小值,适用于需要确定最小值的场景。 分区key 当数据库类型是Dorise、需设置分区key。 “分区key”参数用于指定表的分区键 c.在“属性信息”页面,单击“创建关系”进入创建数据表之间关系。 参数名称 说明 当前表 默认选择上一步骤创建的物理表 当前字段 默认选择上一步骤创建的物理表的属性信息 关系 1:1表示此物理表数据在关联物理表中只有一条数据与之对应。 1:N表示此物理表数据在关联物理表中至少有一条数据与之对应。 N:1表示此物理表数据有多条数据与关联物理表中一条数据与之对应。 关联表 与同模型下已生效物理表进行关联 关联字段 与同模型下已生效物理表字段进行关联 6、 完成物理表基本信息后,单击“确定”,完成物理表信息创建。 后续步骤 您可进行物理表物化、上线转为已生效状态,已生效的物理表可在其他模块应用。