/sre-x-cmdb

基于模型概念的CMDB

Primary LanguageGo

代码结构解释

  • server绑定多个业务service,业务service组装数据以及对接数据库

server

服务层,即HTTP服务

service

业务功能层,即模型(组)、属性(组)、关系等

store

存储层,即mysql、mongodb等

cache

缓存层

broker

消息队列层

设计

mysql数据库设计

  • 模型表
  • 属性表
  • 记录表
  • 值表
  • 关联表

为了多端对接,所以属性验证放在后端

问题场景

唯一约束,是否必须要使用事务来保证value表?因为在并发情况下,是否会存在对value表并发写的情况,这样唯一约束是否会存在时间差的问题? 解决方案:对同一资源的并发插入数据时加上互斥锁

规定

  • 新增属性后,不允许对当前属性进行type更改,除非直接删除该属性

模型和字段分组如何设计?

分组当做模型和字段中的一个属性呢?还是另外开表专门用来存储分组

思考:

  • 分组的名称需要随时更改
  • 分组与模型和字段对象是关联关系,不是属主关系

备注

  • 定义VO和BO