精华内容
参与话题
问答
  • 领域模型设计

    千次阅读 多人点赞 2020-07-27 14:48:11
    领域模型设计介绍领域模型设计一、前言二、领域与对象三、复杂领域设计原则四、领域驱动设计和实施五、领域划分六、逻辑架构设计七、DDD软件分层设计 领域模型设计 一、前言 现代微服务系统一般涉及的业务流程多,...

    领域模型设计

    一、前言

    现代微服务系统一般涉及的业务流程多,系统交互场景丰富,为了合理切分业务领域,恰当定义业务边界,并以此开发出“高内聚,低耦合”的代码,采用DDD(Domain-Driven Design)领域驱动设计思想就能很好地实现这个目标,根据业务领域合理分层软件架构,让系统拓展性更强,结构更清晰,更灵活,复用程度更高,轻松应对各种复杂的业务需求。

    二、领域与对象

    1.什么是对象
    对象在面向对象定义之中,也规定了一些基本的特征:
    (1)封装:保护内部的操作不被破坏;
    (2)继承:在原本的基础之上继续进行扩充;
    (3)多态:在一个指定的范围之内进行概念的转换。
    2.什么是领域驱动设计
    领域驱动设计(Domain-Driven Design 简称DDD),是一套综合软件系统分析和设计的面对对象建模方法,采用领域模型概念,统一分析和设计编程,使软件能够更加灵活快速地跟随需求变化。
    领域驱动设计的核心在领域模型,领域模型的核心在业务知识。
    3.什么是领域对象
    领域对象(Domain Object)分为实体对象(也称聚合根)和值对象。
    实体对象是具有生命周期、有唯一标识、可以通过唯一标识判断相等性、有增改删查操作、可记录状态的对象。
    值对象是指起描述作用,无唯一标识、只能通过属性判断是否相等、即时创建、用完就回收的不可变对象。值对象必须通过实体对象进行操作。
    4.领域模型中的实体类关系
    领域模型的实体类分为视图对象VO(View Object)、数据传输对象DTO(Data Transfer Object)、领域对象DO(Domain Object)、持久化对象PO(Persistent Object)四种类型,各种实体用于不同业务层次之间的交互,并在各层次间实现转化,如下图所示:
    在这里插入图片描述

    5.对象和领域的关系
    领域是更大的对象,是可以直接产生业务价值的模型,只包含多对象的行为整合,不包含对象的属性,从而实现领域的行为共享。
    领域模型是对业务需求的一种抽象,表达了领域概念、领域规则以及领域概念之间的关系。一个好的领域模型是对统一语言的可视化表示,通过它可以减少需求沟通可能出现的歧义;通过提炼领域知识,并运用抽象的领域模型去表达,就可以达到对领域逻辑的化繁为简。模型是封装,实现了对业务细节的隐藏;模型是抽象,提取了领域知识的共同特征,保留了面对变化时能够良好拓展的可能性。
    领域模型以可视化的方式清晰地表达了业务含义,我们可以根据这个模型来指导后面的程序设计与编码实现。当增加新的需求或者需求发生变化时,我们能够敏锐地捕捉到现有模型的不匹配之处,并对其进行更新。领域模型传递了知识,可以作为交流的载体,符合人们的心智模型,有利于让开发人员从纷繁复杂的业务中解脱出来。

    在这里插入图片描述

    三、复杂领域设计原则

    1.拆分子域建立领域模型
    根据业务特点考虑流程节点或功能模块边界因素,按领域逐级分解成大小合适的子域,针对子域进行事件风暴,记录领域对象,初步确定各级子域的领域模型。
    2.领域模型微调
    梳理领域内所有子域的领域模型,对各子域模型进行微调,这个过程重点考虑不同聚合对象的重新组合,同步需要考虑子域里对象的聚合边界、服务以及事件之间的依赖关系,确定最终的领域模型。
    3.微服务设计和拆解
    根据领域模型的边界和微服务的拆分原则,完成微服务的拆分和设计。

    四、领域驱动设计和实施

    1.步骤一、事件风暴
    (1)场景分析
    根据不同角色和场景,全面梳理从前端操作到后端业务逻辑之间发生的所有操作、命令、领域事件以及外部依赖信息。
    (2)领域建模
    领域建模是一个收敛的过程。过程分为三步:第一步根据场景分析中的操作集合定义领域实体;第二步根据领域实体业务关联性定义聚合;第三步根据业务和语义边界等因素,定义领域模型。
    (3)微服务设计和拆分
    综合考虑职责单一性、性能、版本发布频率、团队沟通效率、技术异构等因素,合理设计和拆分微服务。
    2.步骤二、领域对象服务矩阵
    将事件风暴产生的领域对象按照各自所在的微服务进行分类,定义每个领域对象在微服务中的层、领域类型和依赖的领域对象,主要是为了确定实体、方法、服务等领域对象在架构中的位置以及对象之间的依赖关系,形成服务矩阵,细化了领域对象之间的关系,补充了事件风暴过程中可能遗漏的细节。
    3.步骤三、领域模型服务架构
    根据领域模型中领域对象的属性和服务矩阵,设计符合领域模型的技术架构,架构要能清晰地体现微服务实体间的联系,各层级之间的关系,以及服务组合和编排的关系。
    4.步骤四、代码模型设计
    根据DDD技术架构设计,搭建微服务架构体系,定义各层的微服务工程,各层的领域对象所在的包、类、方法、接口,领域中一个聚合对应一个聚合包。

    五、领域划分

    领域是自上而下的划分,不仅需要在这些相关联的领域有着极其丰富的经验,脑海中有着清晰且成熟的领域模型图。
    而自下而上,也就是本文所讲的,主要思想是从需求出发,划分出实体后,对实体进行归类,最终提炼出领域。
    1)对需求进行充分分析,提炼通用语言,从通用语言中抽象出实体
    我们首先对需求进行充分分析,提炼通用语言,从通用语言中抽象出实体。
    2)按照职责相似度,对实体进行归类,抽象出领域
    通过上面的步骤,我们得到了很多实体,然后按照职责的相似度对实体进行归类,相似度高的为一类,每一类给他们起一个名字,这就是领域。

    六、逻辑架构设计

    在这里插入图片描述
    逻辑架构图主要分为业务层、领域层、数据持久层,其他微服务模块通过zuul网关区分不同业务标识对应的服务路由到业务层,然后业务层通过组合、编排领域层服务,实现业务流程,领域服务操作领域对象(聚合根)和值对象,实现领域对象的属性修改和一系列领域对象行为,调用基础设施层完成完成一系列基础服务和数据库原子操作,实现数据持久化。

    七、DDD软件分层设计

    1.分层概述
    (1)业务层system-xxx-application:组合与编排各领域服务,实现业务流程。
    (2)springcloud微服务接口jar包system-xxx-feignclient:暴露微服务领域接口。
    (3)领域层system-xxx-domain:单领域服务实现。
    (4)领域接口jar包 system-xxx-domain-api:定义领域对象和操作接口。
    (5)基础设施层system-xxx-infrastructure:数据存储与处理。
    (6)公共服务 system-domain-common-xxx:公共配置、工具类。
    (7)system-domain-data-config:Spring容器扫描配置
    2.分层结构图
    总体上分为业务层、领域层、基础设施层,前端通过restful方式请求业务层,业务层通过Spring Cloud的FeignClient接口实现远程调用领域层的微服务,领域层通过自定义Spring容器扫描配置注入不同数据源的组件,从而实现多数据源的操作。
    在这里插入图片描述

    3.层级maven依赖关系
    在这里插入图片描述

    展开全文
  • Neo4j数据模型设计

    千次阅读 2017-06-19 09:30:17
    数据模型设计是数据建模的第一步,因为Neo4j不需要模式结构定义,所以使用简单框图就可以为一个项目或应用设计数据模型。创建数据模型之后,就可以使用SDN进行数据实体建模和一些数据访问的设计。 本文选自《Neo4j...

    摘要: 数据模型设计是数据建模的第一步,因为Neo4j不需要模式结构定义,所以使用简单框图就可以为一个项目或应用设计数据模型。创建数据模型之后,就可以使用SDN进行数据实体建模和一些数据访问的设计。 本文选自《Neo4j全栈开发》。

      开始数据模型设计,一般通过分析业务需求就可以提取出需要建立的节点和关系,然后使用节点和关系画出框图,即可完成数据模型的设计。下面通过两个实例来简要说明数据模型的设计过程。

    用户访问控制数据模型

      在一个访问控制系统中,它的业务需求可以简单地描述为:怎样控制一个用户的访问权限。即一个用户登录系统后,他对系统的哪些资源具有访问权限。通过分析和结合以往的经验,我们可能需要四个节点,分别是用户、部门、角色和资源;三个关系,分别是隶属、拥有和权限。这样,我们就可以画出下图的用户访问控制数据模型。
                 图片描述
      这个数据模型是否合理、是否符合业务需求?我们可以用这个简单框图模拟一下业务流程,简单地测试一下它的合理性。首先看看从这个框图中能不能读出类似这样的信息:隶属于一个部门的一个用户拥有哪些角色就能对哪些资源具有访问权限。如果可以,就可以说明这个模型设计是可行的。
      很明显,这个数据模型设计的业务流程是通顺的。因为对于这个框图,我们可以这样读出它的流程:部门具有一些隶属用户,用户拥有一些角色,角色对一些资源具有访问权限。
      有了这个数据模型之后,就可以对节点和关系进行建模了。在建模中再来确定节点和关系的属性,例如,用户节点可能需要用户名、密码、性别、邮箱、创建日期等属性,同时还要确定关系的对等方式,例如,是一对一、一对多还是多对多等。对于这个实例来说,用户与部门的隶属关系是多对一关系,用户与角色的拥有关系和角色与资源的权限关系都是多对多关系。

    购物网站数据模型

      如果觉得上面的数据模型简单了一点,那么接下来我们使用一个业务需求比较复杂的实例来试一试,比如一个购物网站。购物网站的业务需求大概具有这样的流程:首先商家上架了商品,然后顾客浏览或查找商品,顾客找到自己需要的商品之后,确定购买,接着使用他的账户支付款项,商家收到货款后,将商品快递给顾客,从而完成一笔交易。根据这个业务流程,我们画出下图的数据模型。
                图片描述
      使用这个数据模型,我们同样也可以先测试一下,即看一看它能不能通顺地读出一个购物网站的基本流程。比如完成一个完整的购物流程,首先是商家的库存要上架商品,然后是顾客购买商品,即商品出售形成订单;接下来是顾客结算订单,使用账户付款,形成支付记录,同时商家账户收到款项,并且订单进入发货状态,同时生成物流记录;这时候,商家的库存办理商品出库,这样商品就通过快递进入送货过程之中;最后顾客从收货地址收到商品,并对订单执行确认收货操作,同时对商品进行评价,至此完成一次购物流程。这就可以说明,这个数据模型所表现的业务流程是通顺的,所以它的设计是合理的。
      一般的购物网站还有购物车这一项,以满足顾客一次选购多个商品的需求,所以还必须设计一个购物车,即在上述流程中插入一个挑选商品到购物车的过程。其中购物车只是顾客与商品的一个关联关系。
               图片描述
      这下应该很完整了吧?这个模型的整个流程可以通过数据库来表示。下图是一个网上书店的模拟数据。
               图片描述
      其中“顾客1”挑选了两本书到他的购物车中,“顾客2”购买了一本小说,完成了一个完整的购物流程。
      不过,如果再仔细想想,则可能会发现,上面的流程还需要更多的细化。比如,上面的数据模型虽然可以表现一个正常交易的流程,但是如果出现不正常的交易情况,那这个数据模型就走不通了。例如,顾客下单后,有可能又不要了,所以,这就需要有撤销订单流程。又如,顾客收到商品之后,可能因为质量问题需要退货和退款,所以,还需要增加相应的退货和退款处理流程。另外,商家售卖的一种商品中还有可能具有型号、颜色、价格和库存数量等不同分类,所以,对于商品节点还有必要进行细分。
      不难看出,对上面的数据模型还必须再进行加工和细化。当然,除了这些,还可能有其他各种各样的情况。不过,不管是什么情况,都可以通过简单框图对数据模型进行细化和加工。至于最终怎么建立起一个完整的购物网站数据模型,这里就不再深入探索了。
      本文选自《Neo4j全栈开发》,点此链接可在博文视点官网查看此书。
                          图片描述
      想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                             图片描述

    展开全文
  • 属性级情感分析数据集及模型设计

    万次阅读 2020-08-04 09:00:57
    属性级情感分析数据集及模型设计
    展开全文
  • DW数据仓库分层模型设计

    千次阅读 2018-08-05 22:43:18
    DW分层模型设计

    这里写图片描述

    (待续……)

    展开全文
  • 数据仓库的模型设计

    千次阅读 2017-04-05 00:12:25
    Technorati 标签: 数据仓库,模型设计 数据仓库的模型设计 A. 数据建模方法论 数据仓库模型设计遵循“自顶向下、逐步求精”的设计原则。 模型设计分为三个阶段: 1,概念模型 对业务的范围和使用,从...
  • 领域模型设计(20190407)

    千次阅读 2019-04-07 15:50:41
    业务模型的设计无定式,领域模型设计也不是适应任何业务,对于复杂业务逻辑可考虑使用。 领域模型实践心得 领域模型与传统业务分层区别 使用Spring框架的项目,业务模型通常是: Bean-Service-Dao 其...
  • 数据仓库之模型设计

    千次阅读 2020-03-22 21:01:22
    数据仓库(模型设计) 一、数据仓库与数据库的区别 1、数据仓库是集成的,数据库为单一的业务提供服务。 2、BI结构:数据整合层、数据服务层、应用分析层、信息展现层 3、数据层库结构 ODS(临时存储层),一般...
  • 聊聊数据模型设计

    千次阅读 2014-11-14 14:38:55
    首先简单的说一下我对数据、模型、数据模型、数据模型要素以及数据模型的分类的理解。 数据:是符号。例如 张三 模型:现实世界事与物特征的抽象...通常情况下我们在数据模型设计的时候考虑最多的是数据结构而忽
  • 业务建模和概念模型设计

    千次阅读 2018-11-28 09:36:56
    按照层次关系划分,数据路径上包括业务建模,概念模型设计,逻辑模型设计和物理模型设计。 业务建模是针对公司或者部门级的业务进行全方面的梳理和分解。 概念建模是对业务模型进行抽象出来实体以及实体与实体之.....
  • iOS模型设计---字典转模型

    千次阅读 2016-05-16 10:03:57
    iOS模型设计 在iOS开发中,模型一词几乎伴随着每个程序员的开发生涯。在接触模型之前,小编在开发中也会经常碰到逻辑混乱、条理不清晰等情况。接下来,小编将会带领大家学习MVC架构中重要的一环---数据模型的...
  • 概念模型设计

    千次阅读 2010-05-04 10:36:00
    4.1.3 概念模型设计概念模型不依赖于具体的计算机系统,他是纯粹反映信息需求的概念结构。建模是在需求分析结果的基础上展开,常常要对数据进行抽象处理。常用的数据抽象方法是‘聚集’和‘概括’。ER方法是设计...
  • 文章目录数据仓库纬度模型设计1. 纬度建模基本概念1.1 事实表1.2 维度表2. 维度建模三种模式2.1 星形模型2.2 雪花模式2.3 星座模式数据仓库分层架构1. 为什么要分层2.数仓分层思想数据运营层(ODS)数据仓库层(DW)...
  • Django模型设计详解系列之三

    千次阅读 2017-06-25 23:48:18
    django模型设计总结
  • 浅谈12306核心模型设计思路和架构设计

    千次阅读 多人点赞 2017-11-17 09:36:15
    浅谈12306核心模型设计思路和架构设计 出处:观察者网站+cnblogs 网址:http://m.guancha.cn/Science + http://www.cnblogs.com/netfocus 1月11日起,12306网站开始销售除夕当日火车票。每到此时,铁路...
  • 问题1:navicat的模型设计里面的标签有啥作用啊? 问题2:设计完表模型后如何把模型插入数据库里面啊? 问题3:模型设计能不能直接连数据库也一起自动生成啊? ![图片说明]...
  • 数据模型设计心得

    千次阅读 2012-11-28 18:09:06
    首先简单的说一下我对数据、模型、数据模型、数据模型要素以及数据模型的分类的理解。 数据:是符号。例如 张三。 模型:现实世界事与物...通常情况下我们在数据模型设计的时候考虑最多的是数据结构而忽视了其他两
  • 游戏模型设计用什么软件

    千次阅读 2019-06-14 10:14:27
    游戏模型设计用什么软件?  maya游戏角色建模是指maya游戏角色建模师根据游戏原画师给的稿件,制作出游戏中的人物、动物、怪物等角色的模型。  maya游戏角色建模对美术基础的要求较高,maya游戏角色建模师需要非常...
  • 机器学习模型设计五要素

    千次阅读 2018-01-17 17:51:41
    机器学习模型设计五要素 lambdaJi 6 个月前 作为开篇,把以前零零散散的回答整理一下,对模型进行一个解剖看看黑盒里面长啥样 (不仅仅是跑模型那么简单) --灵感来自于如何看待公司里算法岗位做数据挖掘...
  • 推荐几款软件界面模型设计工具

    千次阅读 2018-12-01 16:55:20
    界面模型设计中很实用的一个工具GUI Design Studio,可以让界面示意图实现基本的交互,便于演示、交流。 GUI Design Studio提供的了大部分C/S、B/S组件的示意图,可组合使用,在一般软件界面模型设计阶段基本可以...
  • 数据仓库的模型设计 A. 数据建模方法论 数据仓库模型设计遵循“自顶向下、逐步求精”的设计原则。 模型设计分为三个阶段: 1,概念模型 对业务的范围和使用,从高度上进行抽象概括,也就是划分主题域...
  • AI产品经理数据模型设计文档(简版)

    千次阅读 2019-04-03 08:32:42
    目前数据、算法、AI产品经理岗位十分热门,本文写给想要入行这方面的新人们,带大家一起了解一下什么是数据模型设计文档。 有一些产品童鞋不惜花很大的力量想要看看数据模型设计文档长什么样子,下面就列举一个...
  • 几款软件界面模型设计工具

    万次阅读 2017-05-04 10:38:23
    界面模型设计中很实用的一个工具GUI Design Studio,可以让界面示意图实现基本的交互,便于演示、交流。 GUI Design Studio提供的了大部分C/S、B/S组件的示意图,可组合使用,在一般软件界面模型设计阶段基本可以...
  • 【信用卡模型设计初步】个人信用卡设计【版权所有,抄袭必究】 初版1.0 信用卡体系   信用卡信息     账户名称   账单日   到期还款日   卡号 ...
  • 一个在线ER模型设计的网站

    千次阅读 2019-08-08 21:47:07
    记录一个在线ER模型设计网站,可以导入MySQL,Oracle,SQLServer ,PostgreSQL 脚本生成ER模型,访问地址: https://www.freedgo.com/erd-index.html, 效果图如下:
  • 数据库 - E-R模型设计

    万次阅读 2016-04-16 20:43:01
    数据库设计分为三个阶段: ...优化数据存储和访问物理设计(即对给定的基本数据模型设计一个适应环境的物理结构的过程,包括文件类型、索引结构和数据的存放次序等)。 E-R模型 即实体-联系模型,它提供不受任何DBM
  • 声明:本博文即使自己学习知识的一种简单记录,方便自己使用,也是把自己在遇到问题,找到解决...关系数据库数据模型设计及设计工具PowerDesigner中实现CDM(概念模型)设计并转化为PDM(物理模型)    博文摘要
  • 带你详细了解,秒杀架构模型设计

    万次阅读 2020-09-14 21:55:08
    我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题: 目录 **一:**秒杀系统应该考虑的问题 **二:**秒杀系统的设计和技术方案 **三:**系统...
  • 数据仓库-逻辑模型设计(粗讲)

    千次阅读 2019-07-09 18:51:04
    逻辑建模能直接反映出业务部门的需求,同时对系统的物理实施有着重要的指导作用,它的作用在于可以通过实体和关系勾勒出企业的数据蓝图。 ...所以,我们必须对概念模型设计步骤中确定的几个基...
  • 三个数据库模型设计

    千次阅读 2010-01-17 23:26:00
    概念数据模型设计与逻辑数据模型设计、物理数据模型设计是数据库及数据仓库模型设计的三个主要步骤。 在数据仓库领域有一个概念叫conceptual data model,中文一般翻译为“概念数据模型”。 概念数据模型是最终用户...

空空如也

1 2 3 4 5 ... 20
收藏数 99,003
精华内容 39,601
关键字:

模型设计