1.数仓架构规范
(一)分层架构规范
1.明确分层原则:通常遵循自下而上的 ODS(操作数据存储层)、DWD(明细数据层)、DWS(汇总数据层)、ADS(应用数据层)架构。ODS 近乎原样存储从源系统抽取的数据,起到缓冲和备份源数据作用;DWD 对 ODS 数据初步清洗、标准化,为上层提供统一格式明细数据;DWS 按照主题域聚合 DWD 数据,如按销售、财务等主题汇总,提供分析型数据;ADS 面向具体业务应用,如报表、数据挖掘需求定制数据。
2.数据流向清晰:严格规定各层数据单向流动,禁止跨多层回溯调用,一般只允许相邻层间交互,即 ODS -> DWD -> DWS -> ADS,确保数据处理流程有序,易于维护与追踪。
(二)层间调用规范
1.下层服务上层:下层数据层为直接上层提供数据支撑,上层只能从紧邻下层获取所需数据,不能跨层调用。例如 DWS 层构建的销售主题汇总数据,供 ADS 层销售报表应用直接使用,而不能从 ODS 层跨越 DWD 层直接取用原始销售数据。
2.接口标准化:相邻层间数据交互接口需统一规范,包括数据格式(如日期统一为“YYYY-MM-DD”)、传输协议(常用 HTTP、FTP 等),确保不同层开发团队协作顺畅,数据传输稳定高效。
(三)需求实现方案规范
1.基于分层设计:接到业务需求,首先分析应在数仓哪一层实现,如简单报表需求多在 ADS 层通过关联已有汇总数据快速满足;复杂分析需求可能需从 DWD 层开始重新聚合、加工数据。
2.方案评审:需求实现方案需组织跨团队评审,涵盖业务、开发、运维等人员,确保方案既满足业务目标,又遵循架构规范,不破坏已有数据生态,如评估新方案对数据存储、计算资源的影响。
2.数仓模型规范
(一)模型设计规范
1.主题域划分:依据业务核心流程,划分如客户、产品、订单、财务等主题域,每个主题域独立建模,便于管理与理解。例如在客户主题域,围绕客户基本信息、购买行为、忠诚度等构建实体关系模型。
2.采用星型/雪花型架构:事实表处于中心,关联多个维度表。星型架构维度表直接与事实表连接,简洁高效,适用于快速查询场景;雪花型架构维度表有层级细分,规范化程度高,适合复杂分析,依业务需求权衡选用。
(二)模型命名规范
1.统一前缀:不同层级模型采用特定前缀区分,如 DWD 层模型前缀为“dwd_”,DWS 层为“dws_”,便于识别与管理,像“dwd_sales_detail”表明是明细数据层销售明细模型。
2.表意清晰:名称包含业务主体与关键信息,如“dws_financial_report_monthly”能直观反映是财务主题、月度汇总报表模型,方便开发、运维人员快速定位。
(三)词根管理规范
1.建立词根库:梳理业务常用术语,提炼词根,如“sale”代表销售、“cust”代表客户,所有相关模型、字段命名尽量基于这些词根拓展,保证语义连贯性。
2.定期维护:随着业务发展,新术语涌现,定期更新词根库,确保命名体系与时俱进,同时回溯审查已有模型命名,必要时调整优化。
(四)指标体系建设规范
1.指标定义统一:对业务关键指标,如销售额、利润率、客户留存率等,明确定义计算口径、时间范围、数据来源,确保不同报表、分析场景下指标含义一致。例如,销售额定义为含税订单金额,统计周期为自然月。
2.分层构建:底层指标基于明细数据计算,为上层复合指标提供支撑,像日销售额是基础指标,月销售额可由日销售额汇总得到,构建层次分明的指标体系,满足不同业务深度需求。
3.数仓流程规范
(一)需求承接规范
1.需求收集:主动与业务部门沟通,定期组织需求调研会,通过问卷调查、业务访谈等形式,全方位收集数据需求,包括报表需求、数据分析需求、数据挖掘需求等。
2.需求文档化:将收集到的需求整理成详细规范的文档,涵盖需求背景、目标、详细功能描述、预期交付时间等,便于后续开发、测试、验收环节对照执行,避免需求模糊引发项目风险。
(二)运维机制规范
1.监控体系:建立全方位数据监控,包括数据质量(准确性、完整性、一致性)监控,通过数据校验规则比对;任务执行状态监控,实时查看 ETL 任务、数据处理任务是否成功执行,利用工具如 Zabbix、Prometheus 实现可视化监控。
2.故障应急:制定详细故障应急预案,依据故障影响范围、严重程度分级,不同级别启动相应处理流程,从故障发现、通知责任人到恢复系统正常运行各环节明确时间节点与操作步骤,如数据延迟故障,5 分钟内发现通知,30 分钟内定位修复。
(三)上线流程规范
1.预上线测试:在正式上线前,进行多轮测试,包括单元测试,开发人员自测代码功能;集成测试,模拟真实业务场景,检验不同模块、组件协同工作能力;用户验收测试,邀请业务用户验证是否满足需求,所有测试通过方可进入下一步。
2.灰度上线:对于重大变更或新功能,采用灰度上线策略,先在小部分用户或业务场景试用,收集反馈,确认无误后逐步扩大范围,降低整体上线风险。
(四)模型设计流程规范
1.业务调研:深入了解业务需求、流程,与业务专家沟通,确定模型服务的业务场景、目标,如为精准营销构建客户画像模型,需调研营销流程与客户特征需求。
2.设计文档:依据调研结果,撰写详细模型设计文档,包括模型架构图、实体关系图、字段定义、数据来源、预期性能指标等,作为后续开发依据,并在团队内部评审,确保设计合理性。
4.数仓管理规范
(一)监控告警规范
1.告警阈值设定:针对数据质量、任务执行等监控指标,结合业务容忍度与历史数据波动,设定合理告警阈值。如数据准确性低于 95%、任务延迟超过 10 分钟触发告警,确保问题能及时被发现。
2.告警渠道:利用多种渠道发送告警,如邮件、短信、企业即时通讯工具,优先选择能及时触达责任人的方式,且告警信息包含问题描述、影响范围、紧急程度、建议处理措施等,便于快速响应。
(二)存储管理规范
1.分区策略:根据数据特性,如时间序列数据按年、季、月、日分区;地域数据按地区分区,便于数据查询、管理,减少全表扫描,提高查询效率,如查询某季度销售数据,直接定位季度分区即可。
2.存储介质选型:热数据(近期频繁访问)优先选用高性能关系型数据库,如 Oracle、MySQL;冷数据(历史久远、访问少)考虑分布式存储,如 Hadoop HDFS,平衡存储成本与访问效率。
(三)数据安全管理规范
1.访问权限控制:基于角色的访问控制(RBAC),为不同岗位人员(如业务分析师、开发人员、运维人员)设定不同权限,业务分析师只能查询 ADS 层报表数据,开发人员有权限修改开发层模型数据,防止越权访问。
2.数据脱敏:对敏感数据,如客户身份证号、银行卡号,在非必要场景进行脱敏处理,采用哈希、替换等方法,保证数据可用性同时保护隐私,如身份证号保留前 6 位和后 4 位,中间用星号代替。
5.数仓开发规范
(一)ETL 规范
1.抽取策略:根据源数据特性与更新频率,选择合适抽取方式,如全量抽取适用于数据量小、更新不频繁源数据;增量抽取针对数据量大、实时性要求高的数据,利用时间戳、日志文件等标识新数据,确保抽取高效且数据完整。
2.转换规则:明确数据清洗、转换规则,如去除字符串前后空格、将字符串类型日期转换为日期型,统一编码格式,编写详细转换文档,便于维护与追溯。
(二)数据质量规范
1.数据质量检查点:在 ETL 流程关键节点设置质量检查点,如抽取后、转换后、加载前,通过编写校验函数、比对规则,检查数据准确性、完整性、一致性,发现问题及时修复或告警。
2.质量评估报告:定期生成数据质量评估报告,统计质量问题类型、发生频率、修复情况,向业务部门和管理层汇报,为数据优化提供依据。
(三)代码设计规范
1.命名规则:变量、函数、类等命名遵循统一规则,表意清晰,如变量名采用驼峰式命名,函数名体现功能,“getCustomerData”表明获取客户数据功能,方便代码阅读与维护。
2.代码复用:鼓励代码复用,建立代码库,将常用功能模块(如数据清洗模块、日期处理模块)封装,供不同项目调用,减少重复开发,提高开发效率。
(四)任务清理规范
1.定期清理:对 ETL 任务产生的临时文件、日志文件、冗余数据定期清理,依据数据保留周期,如临时文件保留 1 天,过期日志文件删除,释放存储资源,防止磁盘空间不足。
2.资源回收:任务执行完毕,及时回收占用的内存、CPU 等资源,优化系统性能,确保后续任务顺利执行。
在数仓岗位工作中,严格遵循上述各类规范,才能确保数仓建设有序、高效,持续为企业提供高质量的数据服务,满足业务发展需求。