数据库表设计
本篇文章主要对数据管理平台数据库表设计进行介绍,包括单库多表设计、SQL语句、视图构造等
1、整体设计
-
设备品牌、序列号、型号等使用业务主表进行记录,逻辑磁盘、PCI设备可能出现1对N的情况,分别使用PCI设备表、Mac地址表、逻辑磁盘表、应用程序表、登录日志表进行记录
-
构建虚拟视图统一查询,多表联合,使用业务IP+SN序列号作为设备唯一标识
-
增加历史记录表,对所有表数据的更新删除操作进行记录,方便回溯
2、库表设计
涉及数据库表较多,此处仅展示部分表结构设计
2.1、业务主表
字段名称 | 字段类型 | 解释 |
Id | 字段类型 | 解释 |
BusinessIp | int | 业务Ip地址 |
SN | string | 序列号 |
Brand | string | 品牌 |
Model | string | 型号 |
CPU | timestamp | CPU |
Memory | timestamp | 内存 |
PlatformType | string | 平台类型 |
UseFor | string | 用途 |
CreatedAt | timestamp | 创建时间 |
UpdatedAt | timestamp | 修改时间 |
2.2、PCI设备表
字段名称 | 字段类型 | 解释 |
Id | int | 自增ID |
BusinessIp | string | 业务Ip地址 |
SN | string | 序列号 |
PCIDevice | string | PCI设备表 |
CreatedAt | timestamp | 创建时间 |
UpdatedAt | timestamp | 修改时间 |
2.3、MAC地址表
字段名称 | 字段类型 | 解释 |
Id | int | 自增ID |
BusinessIp | string | 业务Ip地址 |
SN | string | 序列号 |
MacAddress | string | MAC地址 |
CreatedAt | timestamp | 创建时间 |
UpdatedAt | timestamp | 修改时间 |
3、SQL设计
涉及数据库表较多,此处仅展示部分建表SQL,作为参考
3.1、历史记录表
CREATE TABLE `es_history` (
`Id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`Object` varchar(255) NOT NULL COMMENT '索引',
`PK` varchar(255) NOT NULL COMMENT 'BOM前缀',
`Key` varchar(255) NOT NULL COMMENT '索引',
`OpKind` varchar(255) NOT NULL COMMENT 'BOM前缀',
`PrevModify` varchar(255) NOT NULL COMMENT '索引',
`NextModify` varchar(255) NOT NULL COMMENT 'BOM前缀',
`Version` int NOT NULL COMMENT '索引',
`Operator` varchar(64) NOT NULL COMMENT 'BOM前缀',
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
3.2、系统信息表
CREATE TABLE `es_meta_info` (
`Id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`BusinessIp` varchar(255) NOT NULL COMMENT '业务IP',
`SN` varchar(255) NOT NULL COMMENT '序列号',
`Brand` varchar(255) NOT NULL COMMENT '品牌',
`Model` varchar(255) NOT NULL COMMENT '型号',
`CpuModel` varchar(255) NOT NULL COMMENT 'CPU型号',
`CpuNumber` varchar(255) NOT NULL COMMENT 'CPU数量',
`Memory` varchar(255) NOT NULL COMMENT '内存',
`PlatformType` varchar(255) NOT NULL COMMENT '平台类型',
`UseFor` varchar(255) NOT NULL COMMENT '用途',
`MacAddress` varchar(255) NOT NULL COMMENT 'MAC地址',
`LogicDisk` varchar(255) NOT NULL COMMENT '逻辑磁盘',
`PCIDevices` varchar(255) NOT NULL COMMENT 'PCI设备',
`Program` varchar(255) NOT NULL COMMENT '应用程序',
`LoginInfo` varchar(255) NOT NULL COMMENT '登录日志',
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`Id`),
UNIQUE KEY `business` (`BusinessIp`,`SN`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
3.3、逻辑磁盘表
CREATE TABLE `es_logicaldisk` (
`Id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`BusinessIp` varchar(255) NOT NULL COMMENT '业务IP',
`SN` varchar(255) NOT NULL COMMENT '序列号',
`Filesystem` varchar(255) NOT NULL COMMENT '系统盘',
`Size` varchar(255) NOT NULL COMMENT '大小',
`Used` varchar(255) NOT NULL COMMENT '已使用',
`Avail` varchar(255) NOT NULL COMMENT '可使用',
`UsePercent` varchar(255) NOT NULL COMMENT '使用百分比',
`Mounted` varchar(255) NOT NULL COMMENT '挂载点',
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
3.4、视图表
CREATE VIEW es_meatinfoview AS SELECT
es_meta_info.BusinessIp,
es_meta_info.SN,
es_meta_info.Brand,
es_meta_info.Model,
es_meta_info.CPUModel,
es_meta_info.CPUNumber,
es_meta_info.Memory,
es_meta_info.PlatformType,
es_meta_info.UseFor,
CONCAT_WS('---',es_logicaldisk.Filesystem, es_logicaldisk.Size, es_logicaldisk.UsePercent, es_logicaldisk.Mounted) as FileSystem,
es_macaddress.MacAddress,
es_pcidevice.PCIDevice,
es_product.Program,
es_product.PORT,
es_meta_info.CreatedAt
FROM
es_meta_info
LEFT JOIN es_logicaldisk ON es_logicaldisk.BusinessIp = es_meta_info.BusinessIp
AND es_logicaldisk.SN = es_meta_info.SN
LEFT JOIN es_macaddress ON es_macaddress.BusinessIp = es_meta_info.BusinessIp
AND es_macaddress.SN = es_meta_info.SN
LEFT JOIN es_pcidevice ON es_pcidevice.BusinessIp = es_meta_info.BusinessIp
AND es_pcidevice.SN = es_meta_info.SN
LEFT JOIN es_product ON es_product.BusinessIp = es_meta_info.BusinessIp
AND es_product.SN = es_meta_info.SN
WHERE
es_logicaldisk.Filesystem NOT LIKE '%tmpfs%'
4、数据展示
涉及数据库表较多,此处仅展示部分表数据,作为参考,数据IP为之前腾讯云测试公网IP,现已弃用,请勿访问!
4.1、PCI设备信息
4.2、逻辑磁盘信息
4.3、历史记录信息
End
公众号平台更改了推送规则,如果不想错过内容,请点击 “在看” 和 “赞”,感谢支持!