报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

架构设计实践五部曲(三):从领域模型提取数据架构

  • 2019-09-26
  • 本文字数:1540 字

    阅读完需:约 5 分钟

架构设计实践五部曲(三):从领域模型提取数据架构

数据架构重要的输出是数据-实体关系图,简称 ER 图。ER 图中包含了实体(数据对象)、关系和属性 3 种基本成分。ER 图可以用来建立数据模型。如何准确的建立产品的数据模型,需要分解出业务需要什么样的数据。数据域的分解过程是站在业务架构的基础上,对业务域进行模型分析的过程。说起业务建模,大家很快会想到领域模型这个概念。这里的思路是通过领域建模来逐步提取系统的数据架构图。


说到领域模型,这里采用四色原型法进行业务模型的抽象。在进行四色模型分析前,我们先了解下四色模型的一些基本概念。


四色模型,顾名思义是通过四种不同颜色代表四种不同的原型。


  1. Moment-Interval Archetype 时标性原型


表示事物在某个时刻或某一段时间内发生的。使用红色表示,简写为 MI.


  1. Part-Place-Thing Archetype 参与方-地点-物品原型.


表示参与扮演不同角色的人或事物。使用绿色表示。简写为 PPT。


  1. Role Archetype 角色原型


角色是一种参与方式,它由人或组织机构、地点或物品来承担。使用黄色表示。简写为 Role。


  1. Description Archetype 描述原型


表示资料类型的资源,它可以被其它原型反复使用,并为其它原型提供行为。使用蓝色表示。简写为 DESC。


还是以风控系统为例,进行领域建模的过程如下:

1.关键流程

在进行业务建模前,首先需要梳理出业务的流程,这一步在业务架构分解环节中已经完成。按照四色建模法的原则,将业务流程图进行一点改造。在原来的流程图上,将流程涉及的事务和角色添加进来。


改造之后的流程图如下:



图 1

2.领域模型骨干

从业务流中,我们可以清晰的定义出 Moment-Interval Archetype (时标性原型),流程中的每个节点符合 MI 的定义,即事物在某个时间段内发生。在 MI 的定义过程中,一种方法是通过名词+动词进行定义。那么,风控的 MI 即为:数据采集、规则 &模型设置、风险识别、告警通知、风险处置、风险分析(MI 使用红色表示)。


在得到骨干之后,我们需要丰富这个模型,使它可以更好的描述业务概念。这里需要补充一些实体对象,通常实体对象包括:参与方、地点、物(party/place/thing)。


Part-Place-Thing Archetype(参与方-地点-物品原型):业务对象、规则、模型、异常风险、通知、异常事件、分析报告(PPT 使用绿色表示)。


领域模型骨干图,如下:



图 2

3.领域模型角色

在领域模型骨干的基础上,需要把参与的角色(role)带进来。Role 使用黄色表示。如下图:



图 3

4.领域模型描述

最后将模型的描述信息添加进来,模型的描述信息中涵盖模型的具体属性。这些描述信息对于后面数据库设计有很大的影响。


模型描述使用蓝色标注,如下图:



图 4

5.提取 ER 图

领域模型构建完成之后,在此基础上,我们已经能够初步的掌握整个系统的数据模型。其中绿色的 Part-Place-Thing Archetype(参与方-地点-物品原型),可以用来表示 ER 图中的实体模型。红色的 Moment-Interval Archetype(时标性原型),可以用来表示 ER 图中的关系。对领域模型架构图进行提炼,得到如下图:



图 5


实体(Entity)和联系(RelationShip)存在一定的关联关系,一般存在 3 种约束性关系: 一对一约束、一对多约束和多对多约束。将这些约束性关系表现在 ER 图中,用于展现实体与实体间具体的关联关系,最终输出 ER 图。(考虑保证 ER 的简洁性,这里并没有把模型的属性画进来)



图 6


最终一种好的 ER 图需要具备以下原则:


  • 同一实体在同一个 ER 图中只能出现一次

  • 先设计局部 ER 图,再把每一个局部 ER 图综合起来,生成总体的 ER 图。


作者简介


胡斌,菜鸟网络技术专家,目前负责菜鸟风控系统的建设。曾在淘宝技术部先后负责卖家平台、商家运营等领域。在大规模分布式应用、大数据、架构领域有多年的开发和管理经验。

延展阅读

架构设计实践五部曲(一):架构与架构图


架构设计实践五部曲(二):业务架构与产品架构设计实践


2019-09-26 20:5315655

评论 4 条评论

发布
用户头像
通表示ER图那儿没看懂,模型类型、规则类型和处置人从哪儿来的,异常事件、异常风险又去哪儿了?
2021-05-23 21:22
回复
模型和规则的治理,通常需要一个类型来管理,就产生了模型类型和规则类型。规则识别出来的风险,在配置规则时候应该需要对每种风险都配置好处理人。
2021-11-07 11:52
回复
用户头像
提取er图那一步还没有看懂
2020-11-05 15:12
回复
用户头像
大神,能不能再多讲讲数据建模的方法及知识
2020-11-05 15:10
回复
没有更多了
发现更多内容

Kafka零数据丢失的配置方案

奈学教育

kafka kafka配置 kafka数据

Intellij IDEA2020.x如何安装Lombok插件

龙眼果

开发者工具

Serverless: 2020年函数计算的冷启动怎么样了

刘宇

为什么我喜欢的大V拉黑我?

lmymirror

经历 后真相时代 日常思考

spring注入bean的几种策略模式

王德发

Java Spring Boot 测试驱动开发实战营

太赞了,VSCode 上也能画流程图了!

GitHubDaily

visual-studio GitHub 程序员 vscode 开发者工具

多多益善的MacOS文件管理方案

陈东泽 EuryChen

macos Mac apple 提升效率 文件管理

看完这篇操作系统,和面试官扯皮就没问题了

苹果看辽宁体育

操作系统 计算机基础

从ClickHouse的名字由来讲起

nauu

数据库 大数据 分布式 OLAP Clickhouse

Android | Tangram动态页面之路(一)需求背景

哈利迪

android

2020 敏捷产品基本盘

Yanel 说敏捷产品

产品 敏捷 产品设计 产品推荐

近期工作的几点感想

Leiy

app退出登录

【Howe学爬虫】全国统计用区划代码爬取

Howe

Java 爬虫

MySQL备份基础

一个有志气的DB

MySQL 数据

Java实现Base64

Java

KK日知录20200515

kimmking

何时开始重构?

Page

敏捷开发 重构

真的!只需 “六步” 实现图像特定物体识别!!!

攀岩飞鱼

Python OpenCV 计算机视觉 图像识别 物体检测

MySQL索引知识介绍

Simon

MySQL 索引结构

常见的主从报错集锦

一个有志气的DB

MySQL 主从配置 主从同步

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (七)CORRECT边界条件

编程道与术

Java 编程 软件测试 TDD 单元测试

敏捷团队成员的工作量指标真的那么重要吗?

金生水起

敏捷开发 Scrum精髓 敏捷精髓 Agile

【大咖说问大咖】关于开源的那些事 —— PingCAP CTO 黄东旭 Q&A 交流帖

InfoQ写作社区官方

开源 写作平台 大咖说 技术交流 热门活动

提升编程效率:重构

Page

高效工作 敏捷开发 重构 高效

搜商:高效的使用搜索引擎

石云升

高效搜索 搜索技巧 搜商

学习型组织的修炼之道

Yanel 说敏捷产品

团队管理 项目管理 敏捷 团队协作 组织转型

数据分析的利器-clickhouse概述

流沙

数据库 Clickhouse

用"结构性张力"构建自驱力

Yanel 说敏捷产品

团队管理 敏捷 团队协作 项目

工程师、程序员和产品经理

王泰

程序员 产品经理 IT 软件工程师 工程师思维

揭秘!开源软件背后的神秘组织

Apache Flink

大数据 flink 流计算 实时计算

BVR 才是变革的核心

Yanel 说敏捷产品

团队管理 项目管理 敏捷 敏捷开发 敏捷精髓

架构设计实践五部曲(三):从领域模型提取数据架构_架构_胡斌_InfoQ精选文章