领域建模之数据模型设计方法论 | 京东云技术团队

这篇具有很好参考价值的文章主要介绍了领域建模之数据模型设计方法论 | 京东云技术团队。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文通过实际业务需求场景建模案例,为读者提供一种业务模型向数据模型设计的方法论,用于指导实际开发中如何进行业务模型向数据模型转化抽象,并对设计的数据模型可用性、扩展性提供了建议性思考。通过文章,读者可以收获到业务模型向数据模型抽象可参考的一种方法论,并针对后期业务需求变化,尽可能降低模型调整或者模型推a倒重建的风险。本文可以重点关注建模实施流程,针对自己实际业务场景,不断抽象优化自己的数据模型。

一、背景

从研发人员的角度出发,技术更多的是为业务赋能,同时研发人员也可以通过业务模型设计来提升自己的技术,他们更多的是技术控,追求拥有更多的技术栈。不过今天不讨论具体的技术,准备换一种思维模式来分享下自己在业务开发中的一些经验,并结合实际案例来阐述针对业务场景进行数据建模的方法论。

开发人员在日常工作中,参与PRD评审、听产品经理讲述用户故事、提出各种需求。评审结束,一般会一股脑投入到设计开发,而数据库表设计就是其中不可或缺的一个过程。对于熟悉的业务模块,通过对需求分析,可以轻而易举的完成数据表设计,但对于非熟悉业务领域,可能会经过多轮PRD分析,整理一套数据表结构基础,然后对其追加字段,就完成了基础的数据模型设计。而在这个过程中,往往会感觉没有可以参考的理论,有时候甚至对设计的数据库表产生怀疑,不断考虑此设计是否符合业务、表结构设计后期是否具有通用性、表之间关系是否恰当可扩展等等。今天来谈些在实际业务开发中,针对数据建模的一些思考。

一个好的方法论一定是告诉你当你面对一个全新的业务场景或未知领域的时候,如何去独立分析和解决问题。

二、名词

领域:可以理解为传统软件需求分析中的业务场景对应的业务域,比如常见的电商、物流、运输等领域。

子域:领域的部分业务域,比如电商的部分订单、支付、库存等子域。

建模:业务域的映射和抽象。

三、思考

面向对象分析的设计思维模式:

领域建模之数据模型设计方法论 | 京东云技术团队

图1. 用户角度到开发角度思考

四、方法论

4.1  实施步骤

  1. 识别对象;
  2. 组织对象;
  3. 定义对象模型间关系;
  4. 完善模型细节(属性、状态);
  5. 领域模型到数据模型映射;

4.2 CASE实践(社区团购–预排线调度建模案例)

(1)PRD需求描述

预排线系统从OFC系统获取团单数据:截单之前每天下午OFC推送一份当天需要预排线的数据出来,这些数据包括每个已经成团的团单(生产单)和截止到当前时间团单的商品数据,这里面包含当天已经取消的团单(即所有的商品数量都是0)。同时在截单之后,OFC会把截单后的团单数据再推送一次,里面包含当天已经取消的团单(所有的商品数量都是0);

团单数据创建、更新、删除:如果下发的生产单号在预排线系统不存在,则创建团单信息;如果下发的生产单号在预排线系统存在,则更新下面单商品的数量、团单的收件地址、经纬度、团长ID、姓名、电话等信息;如果有新增的商品则添加团单下的商品数据;如果更新的团单数量,其下面所有商品的个数都为0,代表这个团单已经被取消,则逻辑删除这个团单,同时取消这个团单和对应线路的绑定关系;更新的商品数量都是更新的商品的当前数量,不会更新调度时的数量和实际的数量。

(2)识别对象

Note:

  1. 复用或者修改已有模型(比如:运输需求、计划、询价单、对账单、财务账单等);
  2. 行业、公司内概念列表(比如:社区团购、分拣、调度、询价、计费等);
  3. 名词。

识别出的对象:

OFC 团单 单 预排线数据 生产单 商品 商品数量 预排线系统 团单收件地址 经纬度 团长ID 姓名 电话 线路 商品当前数量 调度时的数量 实际数量

(3)组织对象

Note:

  1. 一词多用、重复、歧义:归结为一个对象模型;
  2. 复数:students --> student 归结为一个对象模型;
  3. 属性:可以归结为对象模型的特征,不单独升级为一个对象,但特殊场景下,比如文章的分类可以为文章的一个属性,但是当分类又有子属性时,比如有子属性标签,这时可以把分类单独升级为对象模型。类似设计数据库表,是设计为字段还是新设计一张表一样。

分析对象:

  1. OFC :系统
  2. 团单:生产单 单 团单收件地址 经纬度 团长ID 姓名 电话
  3. 预排线:预排线系统,预排线模型 线路
  4. 商品:商品 商品数量 商品当前数量 调度时的数量 实际数量

(4)定义对象模型关系

Note:

  1. 外键
  2. 关系:一对一、一对多、多对多,关系传递

分析关系:

  1. “同时取消这个团单和对应线路的绑定关系” -----> 预排线包括多个团单,预排线 VS 团单= one vs many
  2. “如果有新增的商品则添加团单下的商品数据” -----> 团单下有多个商品,团单 VS 商品 = one vs many

领域建模之数据模型设计方法论 | 京东云技术团队

图2. 模型间关系

(5)完善模型信息(属性状态)

Note:

  1. 子域:模型对象的子对象信息,比如:店铺模型下的员工模型、地址库模型、员工薪资模型等。
  2. 属性:模型对象的特征表现
  3. 状态:状态机
  4. 边界:对象模型间交互部分,分清楚哪些属于A对象哪些是B对象

完善对象模型:

领域建模之数据模型设计方法论 | 京东云技术团队

图3.对象模型(模拟字段信息)

(6)领域对象到数据模型

Note:

  1. 派生:数据模型之间的一种关联、继承、映射出的一种关系。比如“预排线模型”中“运输任务编码”属性,属于调度域的模型属性,后期会与调度域系统产生关联关系,所以把运输任务编码作为“预排线模型”的一个派生属性。
  2. 冗余:①低级冗余(显示)–模型依赖外部模型属性字段显示使用,这时不用再关联查询或者通过IO获取;②高级冗余(计算)–比如外部模型有单价、数量属性且稳定不变,则模型可以依赖其计算结果,省去二次计算逻辑;
  3. 扩展表:①数据模型的垂直拆分,减少大对象;②变更不是很频繁的字段可以放到扩展模型;

社区团购排线部分模型设计图:

领域建模之数据模型设计方法论 | 京东云技术团队

图4 终版数据模型图

五、扩展

5.1 领域模型设计阶段思考

对象:领域模型对象,上述案例分析到的对象模型;

功能:哪些业务功能划分到领域(微服务)或者子域(模块)里面

接口:服务应该暴露的接口能力;

5.2  方法论

动词+宾语 <----> 方法接口+对象

  • 业务功能操作和实体对象分离,更容易进行微服务划分;
  • 某个微服务应该暴露哪些接口;
  • 领域上下文边界,接口应属于哪个领域提供。

领域建模之数据模型设计方法论 | 京东云技术团队

图5 领域模型调用关系图

五、结语

一个好的方法论一定是告诉你当你面对一个全新的业务场景或未知领域的时候,如何去独立分析和解决问题。

作者:京东物流 郑朋辉

来源:京东云开发者社区文章来源地址https://www.toymoban.com/news/detail-488023.html

到了这里,关于领域建模之数据模型设计方法论 | 京东云技术团队的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数仓建模方法论

    1.数仓建模的理由 数据建模的主要目的是降低成本,提高数据的利用效率。尤其是大数据时代的到来,数据的多样化,巨量,更需要有效的有针对性数据建模方法。 大数据的数仓建模正是通过建模的方法,更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到

    2024年02月05日
    浏览(30)
  • 【交付高质量,用户高增长】-用户增长质量保证方法论 | 京东云技术团队

    俗话说,“测试是质量的守护者”,但单凭测试本身却远远不够。大多数情况下,测试像“一面镜子”,照出系统的面貌,给开发者提供修改代码的依据,这个“照镜子”的过程,就是质量评估的过程,或者说,测试的过程更像“量体温”,虽然可以测量出温度进而判断健康

    2024年02月08日
    浏览(27)
  • 软件架构设计(十) 架构评估(复审)-方法论

    我们上一节讲到了为什么么要进行架构的评估, 以及架构评估有哪些质量属性,本节正式来学习架构评估的一些方法论。 再讲到架构评估之前,还需要了解几个概念,也就是风险点,非风险点,敏感点,权衡点等。 风险点:系统架构风险是指架构设计中潜在的,存在问题的

    2024年02月09日
    浏览(26)
  • 收藏:不错的数据中台建设方法论

    数据中台建设方法论体系,需要从 组织、保障、准则、内容、步骤5个层面 全面考虑,以确保数据中台建设和实施能如期完成。 1种战略行动 ,把用数据中台驱动业务发展定位为企业级战略,全局谋划 2项保障条件 ,通过宣贯统一组织间的数据认知,通过流程加速组织变革

    2024年02月12日
    浏览(33)
  • 数据仓库性能测试方法论与工具集

    目录 目录 数据仓库 v.s. 传统数据库 数据仓库性能测试案例 性能指标 测试方案 测试场景 测试数据集 测试用例 性能指标 测试脚本工具 基准环境准备 硬件环境 软件环境 测试操作步骤 Cloudwave 执行步骤 导入数据集 TestCase 1. 执行 13 条标准 SQL 测试语句 TestCase 2. 执行多表联合

    2024年02月12日
    浏览(30)
  • MySQL数据库IO性能优化方法论

    作者:禅与计算机程序设计艺术 随着互联网信息化的发展,网站日益繁荣,用户对网站访问速度要求越来越高。如何提升网站数据库IO性能从而实现快速响应?本文将从数据库的优化角度出发,结合实际应用场景,进行系统地剖析、归纳和总结,为读者提供一个系统性、完整

    2024年02月06日
    浏览(39)
  • 【设计模式之美】SOLID 原则之二:开闭原则方法论、开闭原则如何取舍

    具体的说,添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。 举例说明: 现在,如果我们需要添加一个功能,当每秒钟接口超时请求个数,超过某个预先设置的最大阈值时,我们也要触发告警

    2024年01月25日
    浏览(32)
  • 构建数据中台的三要素:方法论、组织和技术

    知道要转型,要建设数据中台,却不知咋做,咋办? 现在有很多讲“如何建设数据中台”文章,观点各不相同: 数据中台是数据建设方法论,按照数据中台设计方法和规范实施就可建成数据中台 数据中台背后是数据部门组织架构变更,把原先分散的组织架构形成一个统一中

    2024年02月16日
    浏览(28)
  • 什么是主数据管理?企业主数据管理方法论

    主数据又被称为黄金数据,其价值高也非常重要。对企业来说,主数据的重要性如何强调都不为过,主数据治理是企业数据治理中最为重要的一环。主数据管理的内容包括  主数据管理标准、主数据应用标准  和  主数据集成服务标准  三大类。 主数据管理的作用和意义主要

    2024年02月13日
    浏览(24)
  • MATLAB实战应用-【数据处理篇】数据清洗(从方法论到实战应用)

    目录 前言 数据清洗需要达到什么要求 如何规范数据 一、解决数据的完整性问题:

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包