热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据模型:数字化转型的核心能力

前言业界数字化转型已经进入深水区,数据越来越受到大家重视,由于数据中台等等概念的兴起,大

前言

业界数字化转型已经进入深水区,数据越来越受到大家重视,由于数据中台等等概念的兴起,大家越来越回到数据的根本问题“数据模型”。今天不谈论高大上的数据中台,我想回到数据的本源,谈谈接地气的数据模型。

1
什么是数据模型

我们可以先看一下生活中的模型的例子,房屋平面图、地图等都是很好的模型的示例。

对于下图的房屋平面图来说,我们基本看一眼就能知道这是一个三室两厅两卫的房子,有一个玄关和一个阳台,哪里是门,哪里是墙,哪里是窗户,每个房间的平米数是多少,全部都用各种符号表示得一清二楚。

对于地图来说,我们也知道绿色的部分一般都表示公园,蓝色的部分表示湖,黄色的粗线表示高速公路…

图 1生活中的“模型”(图片来源与网络)

数据模型是用于描绘、沟通数据需求的一组简单易懂、标准的,并且便于计算机实现标准符号的集合

我们都知道数据库很强大,但数据在其中的关系却错综复杂,成千上万个表通过各种关系或约 束互连以形成复杂的结构。没有数据模型,利益相关者很难看到现有数据库的结构、理解关键概念,当需要描述数据需求的时候,也很难准确地表达出来,这也是数据模型很重要的一个最主要的原因。

下图是一个简单数据模型的示例:

图 2一个关于学生-出勤-课程的数据模型

(图片来源:数据建模经典教程,Steve Hoberman)

2
数据模型的几个关键形容词
2.1
数据模型是一组符号集合

与实物模型不同,数据模型不是等比例模拟出来的真实事物,而是一组能表示数据需求、数据结构的符号集合

在房屋平面图中,中间有条线的矩形表示窗户,用直角扇形表示门。在数据模型中,用矩形框或圆角矩形表示实体,用线以及线上的符号表示实体之间的关系、基数或约束,用写在线上的词或词组表示标签,所有的这些符号组成了各种各样的数据模型

2.2
数据模型是用来描绘、沟通数据需求的

建筑设计师在盖房之前通过房屋平面图描绘建筑需求,建筑工人就可以看着这些平面图来盖房子。房子盖完之后还可以把房屋平面图展示给客户,这样即使客户不去现场看实体房就可以大概了解房屋结构。数据模型也是专门设计出来描绘数据需求,给技术实现人员来建造数据库,并且实现数据需求无障碍沟通的“图纸”。

2.3
数据模型是简单易懂、标准的

模型之所以可以让人们实现快速沟通,是因为足够标准并且简单易懂。自古以来,无论是盖房子还是造火箭,都不可能事先把庞大复杂的实物拿过来给大家介绍,相反只需要通过一些简单标准的符号,就可以表示清楚具体的意思。一旦读者看到标准的模型语言,他们能马上能开始讨论这个模型是否准确,而不需要浪费任何额外的时间去探讨建模用的符号是什么意思

2.4
数据模型是便于计算机实现的

数据模型从一个抽象层次描述了数据的静态特征、动态行为和约束条件,最终是要通过技术实现人员转化成能被计算机理解的程序语言,并且在数据库中实现出来的。所以在设计数据模型的时候,必须将便于计算机实现作为模型设计的原则之一。

3
为什么需要数据模型

企业中经常会出现以下问题:

1. 不同技术背景和业务经验的各类人员在讨论数据需求时缺少一种有效的沟通工具,在讨论中经常因为对各种符号理解不一致,导致沟通效率低下,不同观点之间很难协调,达成共识。

2. 当系统出现故障或发现数据问题时,没有可以观察系统的整体视角,技术人员对当前数据库内的状况全然不知,导致系统问题排查困难,数据问题无从下手。

3. 不同部门对业务规则的理解不一致,关于“客户”、“产品”等关键概念含义多种多样,数据库中同名不同义,同义不同名现象随处可见,极大地影响了数据的识别和应用。

数据模型作为不同技术背景和业务经验的各类人员有效沟通数据需求的重要媒介,可以帮助描述与沟通数据需求、增加数据的精确性与易用性、降低系统的维护成本并增加数据可重用性,极大地减少了以上问题出现的频率。

3.1
标数据模型可以帮助不同人员描述与沟通数据需求

在企业中,来自不同部门、具有不同技术背景的业务人员、业务分析师、数据分析师、建模人员、架构师、数据库设计人员、开发人员等各类人员经常需要共同讨论数据问题与数据需求。数据模型作为一种理想的沟通工具,可以快速使相关人员达成共识,跳过对符号的理解而直接讨论深层需求。

3.2
数据模型可以增加数据的精确性与易用性

数据模型中的精确定义为数据提供了一个规范的结构,数据建模过程本身是发现、分析、界定数据需求的过程,可以帮助解释数据上下文的边界,减少数据访问和数据存储时发生数据异常的可能性。通过说明数据中的结构和关系,数据模型使数据更易于使用。

3.3
数据模型可以降低系统维护成本、提升资产可重用性

数据模型有助于我们从整体视角了解业务与数据现状,并有助于人们分析目前可能存在的业务与数据问题、分析修改现有数据结构是否可行和每次修改可能会带来的影响,降低维护成本。另外,数据模型以相对标准精确的形式保留了关于企业系统或项目的记忆,这些记忆可以作为可重用性资产供未来项目使用,从而降低构建新应用程序的成本。

结束语

作为不同技术背景与业务经验的各类人员有效沟通数据需求的重要媒介,数据模型越来越成为数字化转型的核心能力。数据模型有助于人们描述与沟通数据需求、增加数据的精确性与易用性、降低系统的维护成本并增加可重用性。

参考

[1]DAMA International.DAMA-DMBOK: Data Management Body of Knowledge (2nd Edition)[M].Technics Publications:BASKING RIDGE, NEW JERSEY,2017:123.

[2]Steve Hoberman.Data Modeling Made Simple: A Practical Guide for Business and IT Professionals[M].Technics Publications:BASKING RIDGE, NEW JERSEY,2009

(加入数据工匠俱乐部知识星球获取更多资讯)


联系我们

扫描二维码关注我们


微信:DaasCai

邮箱:ccjiu@163.com

QQ:2286075659

热门文章


少有人走过的路:分析->策略->产品


重要:Kafka第3篇之一条消息如何被存储到Broker上


数据分析报告,就该这么写


多维度数据分析是什么?该怎么做?


如何提升数据洞察力

数据分析、数据挖掘、数据运营有啥区别?【通俗版】

我们的使命:普及数据管理知识、发展数据管理工程师行业、改变中国企业数据管理现状、提高企业数据资产管理能力、推动企业走进大数据时代。

我们的愿景:凝聚行业力量、打造数据工程师全链条平台,培养不同层级数据工程师人才、构建数据工程师生态圈。

我们的价值观:分享数据管理知识,持续提升数据管理和运营能力。

了解更多精彩内容


长按,识别二维码,关注我们吧!

数据工程师

微信号:sjgcs

构建数据工程师生态圈





推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • andr ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
author-avatar
llllllw_wlllllll
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有