银行数据仓库体系实践(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

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

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

相关文章

85 总结一下最近遇到的一些 jar发布 相关的知识

前言 呵呵 最近有一些构建服务, 发布服务的一些需求 我们这里的服务 一般来说是 java application, spring boot application 针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小 比如 我的这个 java application, 可能会存在很多依赖, 常规…

探讨Go语言在构建HTTP代理时的优势和挑战

亲爱的读者,让我们一起来探讨一下Go语言在构建HTTP代理时的优势和挑战。 首先,让我们来谈谈Go语言在构建HTTP代理时的优势。Go语言是一种高性能的编程语言,它具有简洁、高效的特点,非常适合构建高效的代理服务器。使用Go语言&…

springboot第52集:微服务分布式架构,统一验证,oauth,订单,地区管理周刊

在计算机领域中,FGC 通常代表 Full Garbage Collection,即全垃圾收集。垃圾收集是一种自动管理内存的机制,它负责回收不再被程序使用的内存,以便释放资源和提高程序性能。 当系统执行 Full Garbage Collection 时,它会…

【代码随想录-数组】二分查找

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Android源码设计模式解析与实战第2版笔记(三)

第三章 自由扩展你的项目–Builder 模式 Builder 模式的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder 模式的使用场景 相同的方法,不同的执行顺序,产生不同的事件结果时 多个部件或零件&…

【驱动系列】C#获取电脑硬件显卡核心代号信息

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《驱动系列》文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点…

msvcp140.dll丢失,有什么好的解决方法?

msvcp140.dll 是 Microsoft Visual C Redistributable Package 的一部分,这是一个由微软开发并发布的运行时库文件。具体而言: 功能与用途: msvcp140.dll 是动态链接库(DLL)文件,包含了 C 标准库的实现和…

CSS3如何实现从右往左布局的按钮组(固定间距)

可以通过下方CSS实现,下面的CSS表示按钮从右往左布局,且间距为10px: .right-btn {position: relative;float: right;margin-right: 10px; }类似这种: 这种: 注意: 不能使用right:10px代替margin-right:10px&#x…

STM32第三节——点亮第一个LED灯

1 STM32CubeMX新建工程 如果是第一次打开STM32CubeMX,软件会自动下载一些组件,等待下载完成即可。 1.2 点击ACCESS TO MCU SELECTOR 选择CPU型号,我用的是STM32F103ZET6,选择 STM32F103ZETx,可以点击旁边的收藏图标…

husky结合commitlint审查commit信息

commintlint是一个npm包用来规范化我们的commit信息,当然这个行为的操作时期是在git的commit-msg生命周期期间,这一点当然是有husky来控制,需要注意的是commit-msg作为一个git生命周期会被git commit和git merge行为唤醒,并且可以…

flutter tab页面切换练手,手势滑动、禁止滑动、page切换动画,禁止切换动画。

1&#xff1a;AppBar、TabBar、TabBarView实现页面切换&#xff0c;点击tab后tabBarView有左右切换动画&#xff0c;滑动page联动tabBar class DevicePage extends StatefulWidget {const DevicePage({super.key});overrideState<DevicePage> createState() > _Devic…

OpenGL 入门(一)— 创建窗口

文章目录 前言创建一个窗口视口动态调整输入控制渲染 完整代码 前言 关键词介绍&#xff1a; OpenGL&#xff1a; 一个定义了函数布局和输出的图形API的正式规范。GLFW&#xff1a;一个专门针对OpenGL的C语言库&#xff0c;它提供了一些渲染物体所需的最低限度的接口。它允许…

2024美赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 模型…

【doghead】2: 数据产生及pacing发送

默认采用fake的数据生产者 FakeDataProducer也可以读取h264文件生成:H264FileDataProducerUSE_FAKE_DATA_PRODUCER G:\CDN\BWE-DEV\Bifrost\worker\src\bifrost\bifrost_send_algorithm\bifrost_pacer.cpp FakeDataProducer 生产制造rtp包 ExperimentDumpData : 可用带宽、发…

【C/C++】详解程序环境和预处理(什么是程序环境?为什么要有程序环境?如何理解程序环境?)

目录 一、前言 二、 什么是程序环境&#xff1f; 三、 为什么要有程序环境&#xff1f; 四、如何理解程序环境&#xff1f; &#x1f34e; ANSI C 标准 &#x1f350; 翻译环境和执行环境 五、详解翻译环境和执行环境 &#x1f347;翻译环境&#xff08;重点&#xff01…

3ds Max宣传片怎么提升渲染速度?从硬件升级到云渲染,全面提升你的渲染速度!

在3ds Max中&#xff0c;渲染是一项耗时的任务&#xff0c;尤其是对于大型场景和复杂的动画。然而&#xff0c;通过一些优化策略和技巧&#xff0c;你可以显著加速渲染过程。以下是一些建议和技巧&#xff0c;帮助你提高3ds Max的渲染速度&#xff1a; 1.升级硬件&#xff1a; …

leetcode88合并两个有序数组

力扣&#xff08;LeetCode&#xff09;-合并两个有序数组 方法一 | 合并后排序 题目要求将两个有序数组合并并保证合并后的数组仍然有序。 观察题目可以看出&#xff0c;nums1的容量大小总是 mn&#xff0c;所以 nums2能够合并到 nums1中。 那就将 nums1中未赋值的地方赋上 …

AI Agents系列—— 探究大模型的推理能力,关于Chain-of-Thought的那些事儿

一、写在前面&#xff1a;关于AI Agents与CoT 本文是2023.07.24发表在同名公众号「陌北有棵树」上的一篇文章&#xff0c;个人观点是基础理论的学习现在仍是有必要的&#xff0c;所以搬运过来。 今天要读的论文是《Chain-of-Thought Prompting Elicits Reasoning in Large La…

ABAP SQL CDSView Entity中使用正则RegEx表达式(Regular Expressions)

1. 正则表达式测试程序 DEMO_REGEXDEMO_REGEX_TOY 2. ABAP SQL & CDSView Entity支持正则语法的场景 SQL函数语法作用执行逻辑返回类型CDS View EntitiesABAP SQLLIKE_REGEXPRLIKE_REGEXPR( PCRE pcre, VALUE sql_exp1[, CASE_SENSIT…

Ubuntu系统服务器安装宝塔面板,可一键部署幻兽帕鲁服务端且可调整游戏参数

本来腾讯云服务器&#xff08;Windows系统和Ubuntu系统&#xff09;的一键运行命令即可部署安装幻兽帕鲁功能&#xff0c;让很多多轻松搭建了自己专属的服务器&#xff0c;这也是腾讯云服务器远远甩开阿里云服务器和华为云服务器及其他品牌服务器的原因&#xff0c;没想到现在其…