银行数据仓库体系实践(11)--数据仓库开发管理系统及开发流程

        数据仓库管理着整个银行或公司的数据,数据结构复杂,数据量庞大,任何一个数据字段的变化或错误都会引起数据错误,影响数据应用,同时业务的发展也带来系统不断升级,数据需求的不断增加,数据仓库需要不断的升级和维护,才能保证为全行提供持续完整准确的数据服务。所以数据仓库基本上是全行或全公司版本最多的系统,如何保证在频繁的变化中保证数据的准确和系统的稳定,需要数据仓库的开发管理必须做到高效、有条不紊。

1、数据仓库开发流程

        1.1、规范先行

       数据仓库从开发上看,数据加载和导入的程序相对固定,开发工作主要是数据转换的SQL脚本的分析和开发。那SQL的分析和开发最主要的还是基于业务逻辑进行编写,所以对数据字段的理解以及对业务规则的熟悉是数据仓库模型人员和开发人员都需要具备的知识,同时数据和规则又会不断变化,那如何确保快速开发,开发的代码具有可读性、模型设计具有一致性,最重要的是在数据仓库建立时就制定相应的规范,使整个团队能按规范同步进行开发、设计。那在数据仓库中主要有以下规范:

        (1)命名规范:包括ETL作业、数据库或大数据平台的对象(表、字段、存储过程、schema名或库名)、脚本名、文件名等都需要按一定的规则进行命名,以便快速定位。

        (2)ETL开发规范:包括抽取、加载作业的开发规范、调度工具的使用规范、SQL脚本或作业的开发规范、开发流程规范等:

        (3)数据模型设计和维护规范:主要对主模型区、汇总指标层、集市层的模型设计原则、方法、重要规则(如客户ID)进行统一。

        通过规范先行,能在数据仓库建设及后续维护中能快速统计数据仓库的运行情况,如系统作业的关键路径、表数量以及空间使用情况,源系统变化的影响情况等,避免产生混乱,比如许多数据仓库或系统随着不断变化和增加,连哪些表在使用,哪些数据已经不更新了、目标表使用了哪些源系统数据字段都不能马上分析出来,需要花费人力来梳理,一段时间后又回归混乱。这种情况不仅无法有效分析数据仓库的实际运行情况,更会带来生产问题的安全隐患。

     1.2、开发流程

        之前已经提到数据仓库从头建设的流程,那现在以某个数据应用对数据仓库提出需求来看整个系统维护的开发流程,主要步骤如下,

       (1)需求分析,确定数据集市和数据仓库的接口字段和内容,明确数据需求;

       (2)模型开发和维护:分析现有模型是否满足所有接口字段需求,如果不满足则需要从源系统增加入仓的表数据,并分析更新主数据区、汇总指标区和数据集市的逻辑模型、物理模型,并确定数据接口字段的映射关系,如果满足则只需确认映射规则;

       (3)ETL开发:开发数据库或大数据平台的数据脚本以及作业脚本,并根据测试和生产验证的情况修正逻辑模型;

      1.3、分工及职责

        数据仓库团队主要分为模型人员、ETL开发人员和测试人员,其中模型人员主要是进行需求分析和模型维护,ETL开发人员负责代码实现和系统维护,开发流程中各角色工作如下:

        那在许多银行实际开发中,根据公司团队规模不同模型人员的职责也会有所差别,模型人员有的属于数据仓库开发团队,只负责数据模型维护,有的属于科技规划团队即又称SA,模型人员除了模型维护可能还兼顾项目经理、系统分析的角色。那模型人员也可能分别负责主模型区、汇总指标区和数据集市。所以模型团队内部也需要定期同步数据模型的变化和更新,统一设计规则和数据分布边界;

2、数据仓库开发管理系统

        通过规范、标准流程和分工协作可以保证数据仓库开发工作有条不紊,但如何高效执行整个开发流程,提高代码开发效率。则需要有数据开发管理工具的支持。

        之前在ETL开发中也介绍了一些开发实践,如标准的数据采集和加载作业、按ETL算法和数据映射自动生成数据转换脚本,那这些都可以通过工具整合并管理。通过开发管理工具对整个开发流程的模型数据、ETL数据和代码进行管理和维护,通过系统化来协助模型设计和开发,那对于一个数据仓库开发管理系统,主要有以下几方面功能:

      2.1数据模型维护功能

        模型维护的功能许多是有文档来进行,通过系统的整合可以提高效率,增加信息的可统计性。

        (1)对于源系统调研信息进行管理,可对源系统的每个表和字段调研备注信息进行存储修改,同时针对每个需求新增的表和字段都进行维护,以便沉淀经验。

        (2)逻辑模型管理,这个功能如果已经是通过ERWIN或POWERDESIGN等工具进行管理,可以只将结果和历史版本进行维护。如果自己开发,可以集成一些开源工具的逻辑模型功能,统一在开发管理系统中维护。

        (3)物理模型管理:物理模型主要是根据逻辑模型可以自动生成物理模型,模型人员和ETL开发人员在这个基础上进行物理化,增加索引、压缩、分区等信息。开发管理系统需要对物理模型进行存储和记录版本变更记录,那各个数据区的物理模型都可以在开发管理系统中维护,同时针对每次版本的变更,自动生成数据库或者大数据平台的数据库脚本。

      2.2 ETL作业信息配置及代码生成

        (1)数据映射:管理第5节介绍的数据转换作业映射文档,在配置算法等信息后,自动生成数据转化作业代码;

        (2)数据采集和加载:管理数据采集作业和加载作业的信息,具体可见第4节,并自动生成采集和加载作业的脚本;

        (3)调度作业:可以集成调度工具测试环境,根据ETL作业脚本信息,自动生成调度作业的脚本并同步作业信息到调度系统,并在调度工具中配置依赖关系后并测试后形成上线的调度作业配置版本。

      2.3 打通测试环境和版本管理工具

        数据仓库的代码主要是ETL脚本,无需编译,只需放在规范的目录下即可,由于生成代码后还需要提交到版本管理工具以及测试环境进行测试,因此可以直接调用版本管理工具的命令进行生成的代码更新,再通过版本发布工具发布到测试环境。如果没有版本发布工具,可以直接在开发管理工具中集成脚本传输的功能,在测试环境验证后再更新版本管理工具上的代码分支。

       通过打通测试环境和版本管理工具,可以提高自动化,确保从系统自动产生代码和脚本,使维护的信息和生产脚本确保一致。

        实际开发中,数据仓库可能会有多个团队进行维护,许多厂商也会有些工具,但要从数据仓库全开发流程以及结合各银行或公司的版本管理、测试管理流程来设计工具,提高开发效率这个层面,厂商一般不会考虑那么全面,需要银行数据仓库管理人员进行规划。通过统一规范及基础上通过开发管理工具可以更好的统一全行的数据开发规范,提高开发效率和代码质量,让更多的人力投入到数据应用开发和分析中。


 

版权声明:本文为acumen_leo博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/acumen_leo/article/details/96648615

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246537.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscode配置python代码开发

文章目录 1. 配置python运行环境2. 常用插件说明3. Vscode配置文件说明3.1 setting.json配置说明3.2 launch.json配置说明 4. 远程开发5. 其他配置 1. 配置python运行环境 安装python插件:点击VSCode左侧边栏中的扩展图标(或按 CtrlShiftX)&a…

Vue3 Suspense 优雅地处理异步组件加载

✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…

深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net

导入python包 import mathimport torch import torch.nn as nn import torch.nn.functional as F silu激活函数 class SiLU(nn.Module): # SiLU激活函数staticmethoddef forward(x):return x * torch.sigmoid(x) 归一化设置 def get_norm(norm, num_channels, num_groups)…

对话泛能网程路:能源产业互联网,行至中程

泛能网的能源产业互联网的标杆价值还不仅于此。其在产业互联之外,也更大的特殊性在于其也更在成为整个碳市场的“辅助运营商”,包括电力、碳等一系列被泛能网帮助企业改造和沉淀的要素资产,都在构成着碳交易市场的未来底层。 这恰是产业互联…

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…

基于GPT3.5逆向 和 本地Bert-Vits2-2.3 的语音智能助手

文章目录 一、效果演示二、操作步骤三、架构解析 一、效果演示 各位读者你们好,我最近在研究一个语音助手的项目,是基于GPT3.5网页版的逆向和本地BertVits2-2.3 文字转语音,能实现的事情感觉还挺多,目前实现【无需翻墙&#xff0…

IS-IS:07 ISIS缺省路由

IS-IS 有两种缺省路由,第一种缺省路由是由 level-1 路由器在特定条件下自动产生的,它的下一跳是离它最近的 (cost 最小)level-1-2路由器。第二种缺省路由是 IS-IS 路由器上使用 default-route-advertise 命令产生并发布的。 本次实…

海康实时监控预览视频流接入web

我们采取的方案是后端获取视频流返回给前端,然后前端播放 海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,…

Oracle RAC 集群的安装(保姆级教程)

文章目录 一、安装前的规划1、系统规划2、网络规划3、存储规划 二、主机配置1、Linux主机安装(rac01&rac02)2、配置yum源并安装依赖包(rac01&rac02)3、网络配置(rac01&rac02)4、存储配置&#…

SG-8506CA 可编程晶体振荡器 (SPXO)

输出: LV-PECL频率范围: 50MHz ~ 800MHz电源电压: 2.5V to 3.3V外部尺寸规格: 7.0 5.0 1.5mm (8引脚)特性:用户指定一个起始频率, 7-bit I2C 地址:用户可编程: I2C 接口:基频的高频晶体:低抖动PLL技术应用:OTN, BTS, 测试设备 规格(特征) *1 这包括初…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

贾玲新片刚刚发出紧急声明,是什么情况。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 1月22日,一则“多位明星参演的电影涉影视投资诈骗…

C# .Net6搭建灵活的RestApi服务器

1、准备 C# .Net6后支持顶级语句,更简单的RestApi服务支持,可以快速搭建一个极为简洁的Web系统。推荐使用Visual Studio 2022,安装"ASP.NET 和Web开发"组件。 2、创建工程 关键步骤如下: 包添加了“Newtonsoft.Json”&…

从零学习Hession RPC

为什么学习Hessian RPC? 存粹的RPC,只解决PRC的四个核心问题(1.网络通信2.协议 3.序列化 4.代理)Java写的HessianRPC落伍了,但是它的序列化方式还保存着,被Dubbo(Hessian Lite)使用。 被落伍,只…

Go 从标准输入读取数据

fmt.Scan系列 fmt.Scan函数定义如下: // Scan scans text read from standard input, storing successive space-separated values into successive arguments. // Newlines count as space. // It returns the number of items successfully scanned. // If tha…

Python使用pip命令安装外部库-项目内安装外部库-全局安装外部库

一、前言 在进行Python项目开发时需要安装一些外部库来扩展项目功能,因此需要了解pip命令的详细使用。 二、基本语法 1.安装库 pip install 包名 2.安装特定版本 pip install 包名版本号 3.升级库 pip install --upgrade 包名 4.卸载库 pip uninstall 包名 5.查看已…

3 JS类型 值和变量

计算机对value进行操作。 value有不同的类型。每种语言都有其自身的类型集合。编程语言的类型集是该编程语言的基本特性。 value需要保存一个变量中。 变量的工作机制是变成语言的另一个基本特性。 3.1概述和定义 JS类型分为: 原始类型和对象类型。 原始类型&am…

单片机学习笔记---矩阵键盘

目录 矩阵键盘的介绍 独立按键和矩阵按键的相同之处: 矩阵按键的扫描 代码演示 代码模块化移植 Keil自定义模板步骤: 代码编写 矩阵键盘就是开发板上右下角的这个模块 这一节的代码是基于上一节讲的LCD1602液晶显示屏驱动代码进行的 矩阵键盘的介…

阿里云负载均衡对接

1 、开通负载均衡产品 2 、ALB / NLB / CLB ALB: 应用型负载均衡 , 给定对应服务域名与当前实例DNS绑定之后即可使用 支持: HTTP/HTTPS/QUIC等应用层流量协议 NLB: 网络型负载均衡 支持: TCP / UDP / TCPSSL C…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…