银行数据仓库体系实践(8)--主数据模型设计

        主数据区域中保留了数据仓库的所有基础数据及历史数据,是数据仓库中最重要的数据区域之一,那主数据区域中主要分为近源模型区和整合(主题)模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤中相对简化,模型表设计的结构同源系统的表结构,字段也一一映射即可。那下面以整合(主题)模型的设计步骤来进行介绍:

         整合(主题)模型层主要按主题进行数据整合,以第3范式为主进行表设计,有以下优点:

       (1)主题模型从全行角度对客户、产品、交易、账户等进行分类梳理,获得全行业务数据视图;

       (2)数据模型比较稳定,只要业务实体关系没有大的变化,不会因为源系统替换或升级导致整合模型出现大的变动。对于数据使用系统和集市来说比较稳定。

       (3)模型灵活易扩展,在增加功能的时可扩展模型,不需要重构数据模型,不影响已有数据实体。

       当然主题模型梳理设计比较耗费人力,同时规则需要全行认可,需要由一个管理全行数据的业务部门来统筹,可以和数据治理项目一起进行,将数据治理的数据标准等成果在数据仓库主题模型进行落地。

1、主题模型设计步骤

       1.1系统调研及筛选

        (1)前期调研与资料收集:调研全行或全公司的系统,从架构、业务数据及流程方面概略了解系统,需要和架构师、各系统负责人进行前期调研沟通,获取系统说明书、表结构、主要流程说明等资料。

       (2)系统级筛选:确定需要入数据仓库的系统范围,筛选条件主要考虑系统是否自己产生业务数据或者是业务流程中的一个部分,另外也考虑以下几方面:

       1)系统是否很快会被其他系统替代,是的话需要考虑对接新系统;

       2)系统数据结构现阶段是否稳定,业务是否有大改造,是的话可以考虑改造完接入;

       3)系统与其他系统的关系,是否关联系统也需要入仓;

       4)分布式系统是否数据结构统一,业务全流程包括哪些系统;

       5)纯外购系统是否能够得到提供商的支持,因为需要供应商配合调研和分析;

       (3)系统讲解及整理:

       确定入仓的系统后需要与系统负责人进行深入的调研和数据分析,主要步骤包括:

       1)系统整体调研:包括系统整理介绍、系统在行内的架构定位、主要功能、和其它系统的上下文关系、以及重要的业务流程和业务规则,同时也要了解系统夜间的切日和日终处理情况,便于后续系统数据采集,那最后产出物为详细的《XX系统调研报告》,同时也需要获取源系统的数据库设计文档及数据字典,建立和源系统调研问题跟进机制。

       1.2确定入仓表及字段

       (1)系统数据表筛选映射、代码整理:

       根据系统数据字典中的表清单进行各个表的功能、数据进行梳理,并确定是否入主数据区(入仓),同时对于确定入仓的表进行主题模型映射和代码字段的整理。那对于表是否入仓主要了解表中数据的业务含义,同时尽量保留粒度比较细的数据。那对于以下情况的表可以不进行入仓:

       1)系统控制类和业务流程控制类表:如系统中的序号生成器、系统开门时间、批处理控制表、数据包接收和拆分的记录;

       2)为未来业务拓展预留的表:部分业务系统设计了一些目前尚未开展的业务数据表;未来的业务规则和处理流程存在不确定性,因此暂不入仓。可以在未来进行扩展和补充;

       3)中间表和临时表:在源业务系统中记录业务操作中间状态的表;

       4)统计和报表类数据:部分系统中有大量的统计或报表类数据,可以使用入仓的明细数据在明确的逻辑和规则下自行进行加工;

       5)数据备份表:一般情况下,数据备份表不入仓;

       那本步骤产出结果为《XX系统表清单分析》及《XX系统代码整理》,以下参考模板:

        (2)字段级筛选映射

       该步骤主要分析,逐一调研分析数据库表中每个栏位的业务含义,向业务及源系统人员了解并使用样本数据确认数据质量和数据信息,并确定是否入整合模型。一般近源模型层除了敏感字段、二进制字段外会全部入仓,整合模型除了这两类还会进行筛选,一般以下类型字段也不进入整合模型:

       1)无分析意义的字段:加载时间戳,密码

       2)业务系统操作流程相关字段:下一打印行数,当前页号,帐页打印标志、批处理标志,

       3)中间计算结果字段:积数,本月累计积数,本期累计贷方发生额

       4)未启用字段:预留字符,预留数值、全空值字段

      5)长文本信息,需要明确业务上不使用的舍弃:备注,经办人,批准人

       6)冗余字段:活期账户中的客户名称,行业类型,经济性质

       那对确定入仓的字段需要进行数据范围以及关联字段(主外键)分析,看是否符合调研信息,对异常数据需要进行跟进分析,确定原因。这部分工作需要源系统人员在生产环境配合跑验证SQL。最终产出物为《XX系统字段分析》、《XX系统字段数据质量调研》。

     1.3逻辑模型设计

       逻辑数据模型(Logical Data Model)是一种图形的展现方式,采用面向主题的方法有效组织来源多样的各种业务数据,全面反映银行复杂的业务规则,它使用统一的逻辑语言描述银行业务,通过实体和关系勾勒出企业的数据蓝图。有实体、属性、关系概念,每个主题都是由多个表来实现的,表之间依靠主题的公共码键联系在一起,形成一个完整的主题。逻辑模型设计工具有商用的EWIN、POWERDESIGN等,目前开源的也有些,但功能和体验稍差些。

那逻辑模型设计可以由2种路径,一是银行根据以往的业务经验提炼本行业务的关键主题,设计出本行的概念模型;二是依托成熟产品进行客户化,即根据一些数据模型实施公司的产品针对本行实际数据情况进行适应。许多行使用第二种方式,速度较快,项目风险小。那基于已有成熟产品的方案在项目初期就需要选择好模型产品,一般可以调研其它行的模型落地情况,在我国银行落地实施较多的产品一般成熟度较高,适用性也经得起实战。那逻辑模型的客户化主要有以下步骤:

       (1)业务定义整合:主要包括客户识别、产品定义、内部机构等。客户识别整合即整合各系统客户信息,定义唯一客户号,识别同一客户。产品定义即在全行角度设置一套产品树并赋予唯一编号,内部机构也是确定一套内部机构,同时各系统的产品、内部机构都能映射到全行定义的产品和内部机构中。

       (2)确定各主题准入、分类、数据整合、历史处理的主题设计原则,比如客户分类包括对公、对私、同业等,历史数据采用拉链方式;

       (3)基于字段级映射的产出,根据主题设计原则再次检视各主题梳理入仓字段的所属主题以及模型中的实体关系是否和源系统实体关系一致,然后将字段映射或新增到现有的主题基础模型中。

       (4)代码整合:需要根据入仓的代码字段整合一套数仓的标准代码,并确定各系统代码字段映射到数仓标准代码的规则。一般这个工作也是数据治理数据标准的部分内容,最好先确定全行数据标准,以它作为数仓的代码标准基础并进行补充。

       (5)模型评估和验证:通过REVIEW会议由各主题设计人员进行主题设计的讲解,由模型组人员进行模型架构、业务规则、实体关系等方面进行评审,修正。模型的验证是一个持续的过程,特别是在提供数据给应用系统以及数据集市后,还会发现设计的问题,因此需要定期总结和优化。

       

    1.4物理模型设计

       逻辑模型适用于多个数据库实现,也就是可以有多个物理模型。物理模型设计主要将逻辑模型转化成可具体实施的数据表及关系并优化应用设计,优化存储以及提高数据访问效率,主要考虑点有:

       (1)考虑删除没有数据来源的实体和属性,增加公共字段如数据新增和修改日期。

       (2)考虑删除只有主键的实体,对于表较少的表或主题考虑合并到其它表或主题中,如渠道主题表和字段较少,可以考虑合并。

       (3)选择和调整主索引和分区字段,使数据均匀分布,提高性能。

       (4)对重要主题域的关键实体给予更多关注,一般客户、协议、事件会占用80%的数据空间,需要重点关注这几个主题的设计,如对事件表和近源层对应源表变化不大,可按视图实现,节省空间。

       (5)根据应用需求和关键字段适当增加关键的冗余字段(反范式),提高数据访问效率,比如在客户主表、协议主表增加常用查询字段的冗余可以减少关联,提高效率。

       (6)考虑大表的分拆和多表的合并,提高效率。

       (7)确定字段的英文命名和数据类型,按命名规范对模型字段、索引、表等进行命名。特别对于字段长度和精度,物理模型中的字段设计比源系统要长,需要考虑后续的扩展,因为源系统经常会增加字段长度或精度,在物理模型中需要提前考虑,以免后续影响数据使用系统。

       (8)分区、压缩和其它类索引:需要对常用的查询字段或条件建立索引,提高查询效率。

       基于逻辑模型生成的物理表,并考虑上述优化点,可以得到最终的数据仓库主题模型的物理模型并进行后续维护优化。


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信积分系统怎么做_开启用户忠诚度之门

积分系统:开启用户忠诚度之门 在数字化时代,积分系统已经成为了企业与消费者之间互动的桥梁。它不仅是一种奖励机制,更是提升用户忠诚度、促进消费的重要手段。本文将深入探讨如何将积分系统作为主题,撰写一篇高质量的营销软文&a…

记录element-plus树型表格的bug

问题描述 如果数据的子节点命名时children,就没有任何问题,如果后端数据结构子节点是其他名字,比如thisChildList就有bug const tableData [{id: 1,date: 2016-05-02,name: wangxiaohu,address: No. 189, Grove St, Los Angeles,selectedAble: true,th…

Socket通信之获取服务器端文件列表点击下载

客户端读取服务器端的文件目录,自主选择进行下载。(AS实现) 1.Manifest添加权限 与之前博文相同,不再赘述。详见: Socket通信-CSDN博客文章浏览阅读272次,点赞4次,收藏10次。套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。socket通…

乘方计算 T1062

#include<bits/stdc.h> using namespace std; int a,n, power1; int main(){cin>>a>>n;for(int i1;i<n;i){power*a;}cout<<power<<endl;return 0; }

【Docker】网络配置network详解

一&#xff0c;network的概述 解决痛点&#xff08;能干什么&#xff1f;&#xff09;&#xff1a; &#xff08;1&#xff09;容器间的互联和通信以及端口映射 &#xff08;2&#xff09;容器IP变动时候&#xff0c;可以通过服务名直接网络通信而不受到影响 二&#xff0c;n…

小白水平理解面试经典题目_数组类Leetcode 412. Fizz Buzz【数学解法】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

大数据信用报告查询费用一般要多少钱?

一些不少朋友在申贷的时候被拒贷之后&#xff0c;得到的原因就是因为大数据不良被拒&#xff0c;这时候很多人都反过来查询自己的大数据信用报告&#xff0c;而查询的价格也是不少朋友都比较关注的&#xff0c;那大数据信用报告查询费用一般要多少钱呢?下面本文就为你介绍一下…

069:vue中EventBus的使用方法(图文示例)

第069个 查看专栏目录: VUE ------ element UI 本文章目录 示例背景示例效果图示例源代码父组件&#xff1a;子组件A&#xff1a;子组件B&#xff1a;eventbus/index.js&#xff1a; EventBus的基本使用方法&#xff1a; 示例背景 在Vue中&#xff0c;使用EventBus可以实现组件…

flask基于Python的期货交易模拟系统的django-afl61-vue

期货交易模拟系统是一个便于用户在线查看期货投资、取消投资、风险控制、账户资金、持仓资金等&#xff0c;管理员进行管理的平台。因此本文主要论述了系统开发的过程和实现的功能&#xff0c;结合Web技术来实现的期货交易模拟系统。本系统以软件工程理论为开发基础&#xff0c…

【差分数组 区间的综合用例】

根据前面两篇文章 区间合并 差分数组 对差分数组和合并区间的介绍&#xff0c;以下是两道相关的例题&#xff0c;其中综合题融合了区间合并和差分数组&#xff0c;非常经典&#xff0c;也有点难度&#xff0c;值得仔细琢磨 最合适的价格 &#xff08;差分数组&#xff09; 给…

Java线程是怎么实现run方法的执行的呢?【 多线程在JVM中的实现原理剖析】

Java线程是怎么实现run方法的执行的呢&#xff1f;【 多线程在JVM中的实现原理剖析】 查看naive state0 方法JVM_StartThread 方法创建操作系统线程操作系统线程执行 本文转载-极客时间 我们知道Java线程是通过行start()方法来启动的&#xff0c;线程启动后会执行run方法内的代…

【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器&#xff09; 一.创建套接字二.绑定网络信息1.构建通信类型2.填充网络信息①网络字节序的port②string类型的ip地址 3.最终绑定 三.读收消息1.服务器端接收消息recvfrom2.服务器端发送消息sendto3.客户端端发送消息sendto4.客户端…

Python使用分治算法作归并排序

对于分治算法的一个较为常规的应用中&#xff0c;归并排序是一个使用分治算法的排序方式。给定一个随机排序的数组&#xff0c;我们要将其元素按照升序或者降序的方式进行排序&#xff0c;可以设想到这样的一种算法&#xff0c;如果一个数组的上半部分和下半部分已经排好序&…

Vue打包Webpack源码及物理路径泄漏问题解决

修复前&#xff1a; 找到vue.config.js文件&#xff0c;在其中增加配置 module.exports {productionSourceMap: false,// webpack 配置configureWebpack: {devtool: false,}}其中打包的物理路径泄露我这边试了好多次&#xff0c;发现只有打包的时候NODE_ENVproduction 才能保…

JSP和JSTL板块:第三节 JSP四大域对象 来自【汤米尼克的JAVAEE全套教程专栏】

JSP和JSTL板块&#xff1a;第三节 JSP四大域对象 一、page范围二、request范围三、session范围四、application范围 在服务器和客户端之间、各个网页之间、哪怕同一个网页之内&#xff0c;总是需要传递各种参数值&#xff0c;这时JSP的内置对象就是传递这些参数的载具。内置对象…

Iceberg从入门到精通系列之二十三:Spark查询

Iceberg从入门到精通系列之二十三&#xff1a;Spark查询 一、使用 SQL 查询二、使用 DataFrame 进行查询三、Time travel四.Incremental read五、检查表六、History七、元数据日志条目八、Snapshots九、Files十、Manifests十一、Partitions十二、所有元数据表十三、参考十四、使…

泰克示波器(TBS2000系列)触发功能使用讲解——边沿触发

# Trigger区域 触发区域用于对触发功能进行配置。示波器的触发功能用于采集&#xff08;Acquire&#xff09;那些在瞬间出现的信号&#xff0c;便于我们分析观察&#xff0c;此时可以当做逻辑分析仪使用。触发区域按钮包括&#xff1a;menu、Level\Force Trig三个。 目录 1.1 …

【机器学习 深度学习】卷积神经网络简述

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;相对完整的机器学习基础教学&#xff01; ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战…

telnet笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、场景二、介绍1.测试端口2.访问百度3. 简单的爬虫 前言 最近telnet命令用的比较多&#xff0c;所以记录一下。 一、场景 ping应该是大家最常用的命令&…

unity角色触摸转向

1、挂载脚本到角色的父物体A上 2 、以屏幕左边的触摸为移动&#xff0c;右边为转向操作 3、加载角色时&#xff0c;将角色的父物体设置为A&#xff0c;须将角色的位置和角度置0 using System; using System.Collections; using System.Collections.Generic; using UnityEngin…