数仓建设规范模板.docx

上传人:李司机 文档编号:7235796 上传时间:2024-07-23 格式:DOCX 页数:17 大小:41.09KB
返回 下载 相关 举报
数仓建设规范模板.docx_第1页
第1页 / 共17页
数仓建设规范模板.docx_第2页
第2页 / 共17页
数仓建设规范模板.docx_第3页
第3页 / 共17页
数仓建设规范模板.docx_第4页
第4页 / 共17页
数仓建设规范模板.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数仓建设规范模板.docx》由会员分享,可在线阅读,更多相关《数仓建设规范模板.docx(17页珍藏版)》请在三一办公上搜索。

1、XX数据仓库建设规范版本号V1.O修订历史版本号作者内容提要核准人发布日期1.0初稿1飒本文档制定了XX数据仓库中数据库对象的命名规范(用户、表、视图、存储过程函数、表分区、主键索引、序列等)、数据库编程规范,JAVA编程规范为系统设计和开发工作提供统一的命名标准,提高系统的规整性和代码的可读性,减轻维护工作量,提高工作效率。2数据库对象命名规范2.1 层次划分序号4US次用途1s存放来自各个系统的原始效据;2DW根据业务分析需求,对主题域内的数据进行轻度汇总;3DM建立跨域的业务主Sfi模型,比如中高端用户,拍照用户等;不能进行同层引用;4DIM统一服务于数据中心的参数表;5APP应用层,用

2、于生成报表6XXXX数据层级按照自己数据仓库规划的命名即可2.2 表、视图、存储过程、函数命名规范对象类型.模型层次一主题一对象描述匚汇总类型匚存储类型说明:尖括号中的内容为必须项,适用于所有用户层对象方括号中的内容为可选项,会因用户层及对象的不同而不同命名约束:数据库对象命名可能受最大长度限制.因此在实际命名中如果按照规范约定的命名方式存在超长的现象,需要开发人员灵活控制。2.2.1对象类型对象类型X一模型层次X一主题域X一对象描述1.汇总类型_存储类型适用范围:所有用户层对象。TBVWTAB1.EVIEW表视图2.2.2模型层次对象类型_模型层次*_主题域X一对象描述匚汇总类型_存储类型说

3、明:对象属性一般为对象归属用户的简写。适用范围:所有用户层对象。可以参照自己的对象属性命名规范,对此不要求统一。模型层次蝴ODS获取层,存放从各个源系统接收的原始数据;DW根据业务分析需求,对数据进行汇总;DM建立跨域的业务主题模型;DIM维表APP报表层,根据DM模型数据生成报表.2.2.3主题域对象类型一模型层次X_主题域_对象描述_汇总类型匚存储类型序号或描述说明:主题域是对数据进行大类划分,不同用户下的分类有所不同。适用所有业务层;每个新增的业务主题均需到该规范备案登记。命名前称描述客户域CustomerXX泛客户2. 2.4对象描述对象类型_模型层次X_主题域XJ时象描述_汇总类型_

4、存储类型适用范围:所有用户层对象;对象描述要求简洁准确,尽可能的直观表达对象的含义,通常包含业务+功能;如果是通用命名规则:对象类型一模型层次x_主题域一对象描述_汇总类型1.存储类型,这里的对象描述是多业务的合成体,这时不加业务。汇总类型对象类型一模型层次_主题域一对象描述_汇总类型1.存储类型适用范围:除字典表、日志表之外的对象。制汇总期日DAY月MON年YEAR2.2.5存储类型对象类型x_模型层次X一主题域一对象描述1.汇总类型1.存储适用范围:所有用户层除日志、字典表、维表之外的对象。对象指逑目标程序无临时表TMP程序中格时使用的中间表,用于存放程序运行中使用的临时数据,程序运行结束

5、后表由程序自行清空,只保留结构。配置表CFG2.2.5.1 日衰日表以统计周期字段做日分区。数据保留周期为业务需要的周期,月底最后一天的数据不保存,如有需要则沉淀到月表中。2.2.5.2 月盘月表以统计周期字段做月分区。除该字段外,其余字段与日表必须相同。数据保留周期为业务需要的周期。所有的月报表月KP1.数据必须从月表出,禁止从日表出。2.2.5.3 周衰周表数据保留周期为业务需要的周期。2.3 其他对象命名规范对象命名规则说明表分区根据实际情况自行确定建议等主键PKQ表名索引IDXJ表名2.4 常用字段命名规范字段名字般说明常用字段1常用蝴1备注1字段命名需做到见名知其意,避免用中文拼音,

6、或者拼音+英语的方式。可以参考企业现有业务数据库的数据字典命名。2.5 常用单位规免约定数据仓库中字段的默认单位,比如车速默认单位是KMh.2. 6数据库对叙命名注意事项命名尽量采用富有意义的英文词汇,不准采用汉语拼音。XX2.7数据仓库建表注意事项表名,列名等需要添加注释,否则不予上线。XXO3主机目录及文件命名规范3.1 用户命名规范主机用户名命名规范:主机用户名用途1hadoop应用程序账号hadoop集群管理用户2ftp账号3.2 目录规划根目录/二级目录/三级目录/业务域/自定义目录规划不做强制性的要求,但是要做到层次清晰、命名规范,见名知意。 根目录取值为:根据物理存储挂载情况而定

7、; 二级目录取值为:主机如果没有文件系统挂载点,则二级目录为用户家目录,否则取值用户名; 三级目录取值为:用户自行定义,如果存储在用户家目录下则需要三级目录; 业务域取值为:抽取的文件按业务类型进行分类存储。业务g说明业务1说明1业务2说明2 自定义取值为:可选项,如果文件存储有其它要求,可根据实际情况灵活调整,如需要分省存放等。3. 3文件命名规范文件类型_主题域_数据周期_接口文件序号dat 主题域主题域取值情况咱定为各项目名称: 数据周期取值为:周期日数据8位长度.YYYYMMDD,月数据6位长度YYYYMM; 接口文件序号取值为:接口文件序号长度为3,默认从OOo开始;3.4文件格式规

8、范文件分隔符文件字段尽量不采用定长分隔,采用“I”等特殊字符作为分隔符,另外在抽取文件时需要确定字段内容中不会出现分隔符字符,以免错列;文件编码文件编码采用UTF-8。4数据保存周期规范鲍JB次保。周期(H1.VE)备注日ODS3665数据库编程规范5.1 参数和变命名规范5.1.1 对象变量对象变量命名规则如下:命名规则:对短类型_变量描述*5.1.2弁数和对象命名注意事项 所有名称采用英文单数名词或动词,避免出现复数. 固定长度的字符串类型采用ChSr.长度不固定的字符串采用VarChar,一定要避免长度不固定的情况下采用Char. 如无特殊需求,避免使用大字段(b1.ob.c1.ob.1

9、.ong.text.ImaRC等 命名使用英文单词,避免使用拼音,特别不应该使用拼音筒写。命名不允许使用中文或者特殊字符. 命名中若使用特殊约定或缩写,则必须要注稗说明. 使用有意义、易于记忆、描述性强、简短及唯一的英文单词,自己特有的命名风格,要自始自终保持一至,不可来回变化。 对于变量命名,禁止取单个字符(如i、j-),建议除了要有具体含义外,还能表明变量类型等。除非必要,不允许使用数字或较奇怪的字符来定义标识符。5. 2书写规范6. 2.1代码大小写规范所有数据代码统一使用小写字母书写,以方便不同数据库之间的移植,同时也避免程疔调用问题。售数和局部变量,全局变量用大写。5. 2.2代码缩

10、进规范 程序块采用缩进风格书写,保证代翦清晰易读,风格一致,缩进格数统一为4格, 必须使用空格.禁止使用TA8建。 同一条语句占用多于一行时,每行的第一个关键字应当右对齐。 对于InSertVa1.UeS和UPdate语句,一行写一个字段,这段后面紧跟注释(注释语句左对齐),va1.ues和insert左对齐,左括号和右括号与insert*va1.ues左对齐。 insert.Se1.eCt语句中,应使每行的字段厥序对应,以每行不超过80字符为准,以增强可读性,5.2.3空格及换行关建字之后要留空格.创建表、存储过程函数时,表名,存储过程名和函数名之后不要留空格. 不允许把多个语句写在一行中,

11、即一行只写一条语句, 相对独立的程序块之间,变量说明之后必须加空行. 超过80字符的语句要分行书写,长表达式应在低优先级操作符处换行,掾作符或关键字放在新行之首,划分出的新行应适当地缩进,使排版整齐,语句可读。 if后的条件要用括号括起来,括号内每行最多两个条件。 不同类型的掾作符混合使用时,建议使用括号进行隔离,以使代码清晰. 减少控制语句的检查次数,如在e1.se(ife1.se)控制语句中,对符合条件频率制的尽量放到前面. 尽量避免使用嵌套的if语句,在这种憎况应使用多个if语句来判断其可能, i6免使用SC1.eCt,语句。 insert语句必须给出字段列表,否则对后续表的扩展回带来组

12、护上的麻烦。当一个So1.语句中涉及到多个表时,必须使用别名来限定字段名,这使其它人阅读起来更方便,避免了含议模阁的引用,其中能够别名中清晰地判断出表名, 确保变和参数在类型和长度与表数据列类型和长度相匹配.5.3注释规范 一般情况下,源程序有效注释量不低于30%以上。说明:注稗的原则是有助于程序阅读理解.便于后期维护,在该加的地方都加了,注释不宜太多但也不能太少,注赭语言须准隔、易懂、简洁。 所有变量定义需要加注释,说明该变量的用途和含义, 注释内容要清晰明了,含义准确,防止注释二义性。 禁止在注将中使用缩写,特别是非常用的缩写. 注释与所描述代码进行同样的缩排。 对程序分支必须书写注释.

13、保证代码和注静的一致性,修改代码同时修改相应的注程,不再有用的注移要同步制除. 注释应与其描述的代码相似,对代码注释应放在其上方或右方(单条语句的注释)相应的位置.不可放在下面. 注释上面的代码应空行隔开, 统一文件头的注释. 在代码的功能、意图层次上进行注释,提供有用额外的信息. 函数应对返回代码详细描述。 尽量使用”父进行注释. 避免在一行代码或表达式的中间插入注释. 所有硬编码必须加注赭,如id=0,则需要优先注样0,的含义,或者在注程中说明对应的字典表.所制01和甯句Hf1.NMSQ1.,以8Q1.99为&B.说明:采用标准SQ1.编写,方便移植时各种数据库之间做对应修改.正例:de1

14、.etefromtab1.e1.;反例:de1.etetab1.e1;敷类St采用答木敷n蜘,尽不罢使用某敷m的她.说明:采用基本数据类型,各种效据库均支持,减少不同版本的维护。设计数据类型和长度时要考虑应用编程开发的方便以及后续可维护性, 对于特别复杂的sq(特别是多层床套,带字句或相关的查询),应先考虑是否设计不当引起.对复杂的Sq1.可以通过程序实现,原则上遵般一句话只傲一件事情,避免多里嵌套SO1.的使用.必要时采用中间表. 对于超过2个以上的大表关联,必须进行执行计划验证,并在设计中有所体现. 避免隐式的数据类型转换. 不要将空的变量值直接与比较运算符比较,如果变量可镜为空,应该使用

15、isnu1.1.或isnotnu1.1.来进行比较。 每个程序过程生成的目标数据表不允许出现空值. 尽可能地使用相关表字段的类型定义,如type,MOWtyPe等。 存储过程中变量不允许在代码中随意定义变量。定义变量时,完成相同功能的变量尽量放在一起,不同功能逻辑的变量用空行隔开,以堵加代码的可读性。 对数据库脚本代码中所定义的变量要进行初始化。 亚合主健的字段数不超过4个.5.5.1程序结构模板5.5.2程序代码5.5.2.1 程序代码规范 程序代码段左测要留有1个缩进4个空格. 除特殊程序(如空调度、日志程序等)外,程序开始、程序结束、程序出借时都要记录日志,日志记录使用公用的函数或存储过

16、程,具体使用方法叁见后面日志内容。关就字要换行输写,不同行关糠字要右对齐.关俄字:insert、se1.ect,frcm,where%and,order(by),grop(by)、having,UPdatC等。 对于内容超过一行的代码,换行时要有一个缩进,并注意对齐以保证美观, insert,se1.ect,groupby,Set等涉及多个字段的操作,要分行列出每个字段,后续字段要有一个缩进,缩进字段要左对齐。 字段分隔符”要放在字段前面, insert的字段要使用“0”括起来,括号独站一行,与insert对齐,括号内的字段要与括号有一个缩进。 每个字段后面都要有字段说明(字段描述值内容、单位

17、等),字段说明要对齐. 字段说明内容可以换行,但同样要与上行字段说明内容对开。 对于比较简单的SQ1.语句,也可根据实际情况写在一行或几行中,但多行的要注意缩进,并且要注意美观性. 对于insert字段数量比较多的语句,对应的se1.ect中的字段尽可能定义别名,别名要与insert中字段名相同,这样很容易找到字段的对应关系。 from的表名要分行列出。 旅套SO1.要使用“0”括起来,括号独站一行,与上一级语句要有一个箍进;括号内的SQ1.与括号还要有一个缩进的开始, 对于多层嵌套,一定要注意各层嵌套的缩进层次,才能保证代码良好的可读性,否则代码将非常难读。 程序中能不用动态SQ1.就不要用

18、,因为立即执行SO1.方式在程序姐译时即可发现问题,而动态SQ1.只能执行时才能发现问题;这样,SQC语句中处理分区表依据时,不要使用分区名方式,应使用分区字段做条件字段,呻Sq1.会自动识别分区字段来处理分区数据. 关健字,保留字之间必须留有空格. 运算符(鼠值运算会,条件运算符、算术运算符等)前后各要留有一个空格. 调用函数或存储过程时,传入的卷数之间要留有一个空格(之后,后续参数之前3 对于不分行的字段之间也要留有一个空格(之后,后域字段之前). 程序代码中的其它注释内容,也要注意对齐情况,位置视情况而定, 程序中所有涉及的表、视图、序列、存储过程、函数等,都必须加上用户名。程序中不同用

19、途的各段代码上方,要加上各自的语句标注,每段语句标注与上方的代码之间要留有一个空行。5.5.2.2程序代码示例5.5.3程序日志5.5.3.1 日志分类程序日志分为两种: 一种是记录程序运行状态情况,一个程序运行一次只记录一条日志,包括程序名称,目标表名、统计时间、程序运行开始和结束时间、运行状态、出褶位置和出楣信息等,用于简单套询程序运行情况,以及以后可能的日志监控, 一种是记录程序运行过程情况,一次程序运行会记录多条日志,每条日志记录程序中不同阶段的运行状况,用于跟踪程序中各阶段的运行状况.与单条日志记录相比,时间上只记录运行开始时间即可.5.5.3.2 日志记录5. 6分区管理规范 分区

20、表的分区增加、分区删除操作,统一由分区控制程序完成,应用数据处理程序中不允许包含增加、删除分区的操作;分区表清空分区的操作,应在应用数据处理程序中进行,这样可以避免因为程序多次运行导致的数据至复. 保留多个周期数据的表必须建立分区,分区键可以根据业务需要和数据大小分为日月,年,这样即可以避免因为表越来越大导致程序运行速度越来越慢,又解决分区太多浪费空间。全量替换的数据表(如维表,临时表)可以不建立分区. 日分区表禁止保留月底最后一天故据,如果要用到月底最后一天数据,需要单独建立月表保存。6JAVA编码规范6.1 避免引发错误的编写规范 使用字符串的CqUa1.S方法比较判断时,如有常量字符串,

21、一定要养成常量在前,变量在后的编写习惯, 养成这种编码习惯能够有效减少当比较的变量是nu1.I时发生空指针的错误 在fina1.Iy中执行关闭掾作,能够确保出现异常时数据库连接、IO读写句柄被正常关闭.6. 2编程注意事项说明 明确方法功能,精确(不是近似地实现方法的设计.一个方法仅完成一件功能,即时荷单功能也应该编写方法实现, 异常捕获后,如果不对改异常进行处理,则应该记录日志或使用. 如果是自己抛出的异常,则必须要填写详细的异常描述信息,这样才转方便。 判断时要注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认的优先级. 不要在循环体内定义变量.6.3程序排版及注释规范6.3.1程序排版程序块要采用缩进风格编写,缩进的空格数为4个。6 .3.2程序注释-一般情况下,源程序的有效注释量必须在30%以上“类或者接口的注释需要包含其功能描述、使用方法、注意事项作者始于那个版本.7 she1.1.编码规范7.1 she1.1.编程案例QBAT大数据架构微信搜一搜

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号