CMDB数据库设计-四种方案任你选
【转自:http://kiral.iteye.com/blog/789467】
最近在做CMDB的数据库设计方案,有4种方案,各有利弊,我选方案3,大家可以讨论下,或者有什么更好的方案,请指教!
术语 |
英文全称 |
说明 |
配置管理数据库(CMDB) |
Configuration Management Database |
它是一种包含每一个配置项全部关联细节以及配置项之间重要关联细节的数据库 |
配置项(CI) |
Configuration Item |
配置项信息覆盖了企业网络中的应用、操作系统、补丁、硬件设备、生命周期成本以及用户链接 |
配置项分类 |
Configuration item category |
配置项所属分类,如数据库,主机 |
设计难点:每个配置项分类的属性会不一样。如数据库有管理员名称和管理员密码属性,显示器有分辨率和尺寸属性。 数据库是配置项分类,分辨率是配置项属性。
1:方案一:动态字段数据库设计
方案说明: |
CMDB由三个实体组成,即配置项,配置项分类,配置项属性定义。 每增加一个配置项属性,会动态的在配置项表里增加一个扩展字段,扩展字段以EP作为前缀。 没删除一个配置项属性,会动态的在配置项表里删除这个扩展字段。 所有扩展字段必须可空。 |
方案优点: |
灵活,且方便查询。 |
方案缺点: |
1:需要建立表分区:当配置项达到上千万的数据的时候,为了提高性能,必须在配置项表的配置类型字段上建立表分区,而不是所有的数据库都支持表分区。但当数据量在百万左右的时候,可以通过建立索引来挺高查询性能。 2:配置项表扩展字段太多:因为每增加一个配置项属性,就会在配置项表增加一个可空字段,所以配置项表的字段会非常多,预计最多在1000左右。所有的数据库对单列的长度都有限制,如MySql单列字段长度为65535。 |
2:方案二:动态表数据库设计
方案说明: |
CMDB由三个实体组成,即配置项,配置项分类,配置项属性定义。表结构类似方案1。 为每一个配置项分类(叶子分类)建立一张表。如为数据库,路由器,防火墙单独建立一张表 |
方案优点: |
性能高:数据按照配置项分类存在不同的表里插入和查询效率高。 |
方案缺点: |
1. 需要创建的表非常多。如果管理粒度非常细,需要创建几百张表。如到windows操作系统,锐捷路由器这一层。当配置项的数据达到千万级的时候,有的配置项表也会达到百万级。 2. 需要动态创建表,随着管理粒度的细化,需要动态创建表。如项目一期的分类为三层,即硬件-设备-路由器,然后到项目三期的时候分类变为四层,即硬件-设备-路由器-Ruijie路由器(cisico,juniper,huawei) |
3:方案三:固定冗余字段数据库设计
方案说明: |
CMDB由三个实体组成,即配置项,配置项分类,配置项属性定义。 在配置项表里增加200个固定的冗余字段,并在”配置项类型和属性关系表”里增加一个字段,建立属性和扩展字段之间的关系,据实际情况表明一个配置项分类的扩展属性不会大于200。 冗余字段里以FS作为前缀的字段表示字符串型,FN表示数字型,FD表示日期型。 冗余字段的分配比率为FS>FN>FD 5:4:1。 相对于全部使用字符串存储的优势在于整个表的体积会缩小。缺点在于分配时比较麻烦,有可能出现某个类型不够的情况,如date类型不够用就得用String字段。 冗余字段的长度:原则为定义为各个数据库能够容纳的最大值,将FS定义为varchar2000 ( 各数据库最大长度为 SQLserver的varchar 8000,mysql的 varchar 65535,Oracle的varchar最大2000,varchar2最大是4000)。 在存储上不会受影响,因为varchar是可变长存储的。查询和插入上的效率取决于存储数据的大小。 各控件的数据存储: 文本框是数字型的存在FI里。 文本框(input),复选框(checkbox),单选框(radio),下拉框(select),文本域(textarea)全部存储在FS里。如果出现数据字典的键值对,直接存值,如1=上海,2=北京,3=福州,直接存上海,北京,福州。 日期控件(date),存在FD里。 删除某个属性时,需先删除属性和F_N的关系,再删除F_N列的数据,F_N列都是可空列。 |
方案优点: |
方便查询。 且规避了方案一的配置项表扩展字段太多的缺点。 |
方案缺点: |
没有方案一灵活 |
4:方案四:固定表和字段数据库设计
方案说明: |
CMDB由两个个实体组成,即配置项(含配置项分类),配置项属性定义。 配置项属性的值存在“配置项类型和属性关系表”里。 |
方案优点: |
简化了设计。 配置项也可以动态增加扩展属性。 |
方案缺点: |
1. 配置项和配置分类放在一张表里,频繁的查询配置项分类存在性能问题。建立索引能够解决性能问题,但是配置项的表是千万级数据量,在多个字段处建立索引,会导致索引文件非常大,并且影响数据查询性能。 2. 使用列存储配置的属性和值,当出现统计查询的时候,查询语句非常难写。 |
CMDB数据库设计-四种方案任你选相关推荐
- ITSM-CMDB数据库设计-四种方案任你选
ITSM-CMDB数据库设计-四种方案任你选 来源 http://kiral.javaeye.com/blog/789467 最近在做CMDB的数据库设计方案,有4种方案,各有利弊,我选方案3,大家可 ...
- 数据库缓存最终一致性的四种方案
数据库缓存最终一致性的四种方案 背景 缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景.而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到 ...
- 集成 websocket 的四种方案
集成 websocket 的四种方案 1. 原生注解 pom.xml <dependency><groupId>org.springframework.boot</gro ...
- react中数据状态管理的四种方案
我们为什么需要状态管理? (1) 一个是为了解决相邻组件的通信问题. 虽然可以通过「状态提升」解决,但有两个问题: 每次子组件更新,都会触发负责下发状态的父组件的整体更新(使用 Context 也有这 ...
- EMQ-X 消息存储到数据库的四种方法
EMQ X 入门教程 基础篇②--EMQ-X 消息存储到数据库的四种方法_小康师兄的博客-CSDN博客_emq x 使用EMQ-X 如何实现将设备上报上来的消息存储到数据库呢,方法很多,如下 一.EM ...
- 数据库的定义、关系型数据库的四种约束。。
今天离开C#开始进入数据库的学习,初步认识了一下:1,什么是数据库 2,数据库表的创建 3,关系型数据库的四种约束方法 1,什么是数据库: (1)定义:数据库是存储在计算机硬盘上,有组织,可以共享 ...
- Oracle数据库的四种启动方式
Oracle数据库的四种启动方式 1.startup nomount 非安装启动:这种方式启动下可执行:重建控制文件.重建数据库 启动instance,即启动SGA和后台进程,这种启动只需要init. ...
- 数据库的四种隔离级别及对应解决的脏读、不可重复读、幻读问题
数据库的四种隔离级别 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且, ...
- 查看python的版本号有 四种方案
查看python的版本号 查看python的版本号有 四种方案 命令行查看 sys模块 查看python的版本号有 四种方案 命令行查看 命令行下查看,在配置好了开发运行环境的前提下: 输入 pyth ...
- 电商如何解决无证经营支付业务问题?四种方案孰优孰劣?
侯维科技 什么是"二清"?什么是无证经营支付业务? 在银行卡收单业务中,以平台对接或"大商户"模式接入持证机构,留存商户结算资金,并自行开展商户资金清算--即所 ...
最新文章
- php httpclient.class.php,php实现httpclient类示例
- OpenCV2.4.13在VS2012环境的debug模式下的链接库输入配置的文件目录
- oracle11g exp导出问题:部分表导不出来
- hdu4807枚举费用流
- php中禁用下拉框,php – Tinymce,禁用numlist下拉列表
- Office Word界面和页面字体模糊不清的解决方案
- 乘法逆元(洛谷-P3811)
- 如何使用async / await和Firebase数据库编写漂亮的Node.js API
- python内建模块_Python 内建模块
- 师妹问我:有哪些新手程序员不知道的小技巧?
- android 串口CH341驱动,ch341ser驱动安装程序
- 分享几种设为首页的代码
- sketch 3.8.1(破解版涵盖3.0,3.7,3.8.0以上版本) 安装and使用指南(20160524)更新)
- pkg打包node项目
- windows audio错误0x80070005
- CAD、mapgis、excel转换为coreldraw技巧方法-来自《地球科学》姚戈
- Java 大写转小写
- 《设计模式之禅(第三版)》 摘录篇-------依赖倒置原则
- 5 个行为让你更好...
- 软件工程小组项目——单词计数
热门文章
- JVM调优浅谈(转)
- 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
- 只读的泛型集合(IList(Of T))
- KeyBlaze for mac(专业打字练习软件)激活版
- 如何在 Mac 上重命名 Apple Magic Mouse?
- 前端代码编辑器:sublime text 4 for Mac v4115中文版
- M1 Mac上运行Windows 11
- Effective_STL 学习笔记(四十五) 注意 count、find、binary_search、lower_bound、upper_bound 和 equal_range 的区别...
- mysqlbinlog结合sed命令恢复update时未加where条件之前的数据
- mysql 空值处理