星辰能源系统架构设计原则

    数据库及DAO层设计原则

    • 1.根据模块进行解耦,根据通用性进行分库
    • A.根据模块进行解耦分表
    • B.根据通用进行解耦分库,分为BASE与DETAIL两库,BASE为抽取基本型属性,DETAIL为抽取特殊型属性。
      > * a.作系统分布式耦合时候,以BASE库作授权资料引导,以DETAIL库作为资料引申;
      > * b.避免资料冗余性。
    • 2.mybatis一级、二级缓存
    • A.一级缓存(sqlsession):指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不是从数据库读取。
    • B.二级缓存(namespace):一级缓存的作用域仅限于一个sqlsession,但是二级缓存的作用域是一个namespace。但并不是意味着同一个namespace创建的mapper可以互相读取缓存内容,这里的原则是,如果开启了二级缓存,那么在关闭sqlsession后,会把该sqlsession一级缓存中的数据添加到namespace的二级缓存中。
      > 注意:二级缓存使用场景
      > a.只能在【只有单表操作】的表上使用缓存(不只是要保证这个表在整个系统中只有单表操作,而且和该表有关的全部操作必须全部在一个namespace下)
      > b.在可以保证查询远远大于insert,update,delete操作的情况下使用缓存(这一点需要保证在a的前提下才可以)
      > c.避免使用二级缓存
      > > * a.缓存是以namespace为单位的,不同namespace下的操作互不影响。
      > > * b.insert,update,delete操作会清空所在namespace下的全部缓存。
      > > * c.通常使用MyBatis Generator生成的代码中,都是各个表独立的,每个表都有自己的namespace。
      > > * d.多表操作一定不能使用缓存
    • 3.mybatis-redis进行二级缓存管理
    • 4.高并发性模块需要进行数据库读写分离,例如:设备模块
    • 5.表结构之间尽量不要使用外键关联,脏数据处理应在Service模块中处理
    • 6.表间关系不应直接关联,应通过关系表进行关联,便于模块通用性调用

    后台模块设计原则

    • 1.通用性模块需抽取出来作为独立模块管理,便于多系统同时使用
    • 2.定制性模块需联合在一起作为整体管理,单独定制性项目包含多个定制性模块
    • 3.通用性模块与通用性模块之间不可调用
    • 4.通用性模块与定制性模块之间可通过定制性项目中Controller层进行调用
    • 5.定制性模块与定制性模块之间可通过Controller层进行Service层间调用
    • 6.高度通用性模块需抽取成为单独子系统进行管理,出口为自身模块的Controller层,服务层不受定制性模块的影响,但定制性模块可通过调用子系统的Service层进行有限度耦合。
    • 7.模块化原则:
    • A.力求以少量的模块组成尽可能多的产品,并在满足要求的基础上使产品精度高、性能稳定、结构简单、成本低廉,模块间的联系尽可能简单;
    • B.模块的系列化,其目的在于用有限的产品品种和规格来最大限度又经济合理地满足用户的要求。
    • 8.模块化特征:
    • A.相对独立性,可以对模块单独进行设计、制造、调试、修改和存储,这便于由不同的专业化企业分别进行生产;
    • B.互换性,模块接口部位的结构、尺寸和参数标准化,容易实现模块间的互换,从而使模块满足更大数量的不同产品的需要;
    • C.通用性,有利于实现横系列、纵系列产品间的模块的通用,实现跨系列产品间的模块的通用。
    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自Who am I ?,原文地址《星辰能源系统架构设计原则
    喜欢 | 0
    分享:

已经有1 条评论抢在你前面了~

  1. 沙发
    Priest 2017-04-23

    Thanks for your thgsohtu. It’s helped me a lot.