系统参数配置的存储管理与应用的通用方法
作者:成晓旭
1【背景】
在应用软件的设计、开发过程中,尤其是一些大型的复杂的业务系统,为了符合起码的系统通用性设计,系统运行参数需要在系统现场进行设置、或者根据不同的客户需求进行动态调整的情况在所难免。
为了保持系统配置信息,常见的方法有:系统配置文件、系统注册表、数据库表等。系统配置文件,是最常见的一种系统配置信息的保存和应用方式,比如在硬件设备、板卡、客户端软件等方面有大量的应用。系统注册表,是基于Microsoft Windows的系统注册表保存信息的一种方式,在客户端软件中大量应用。前两种方式,对于本身不带数据库的软件,整个系统仅仅有少量的系统配置信息需要保存的情况非常简便、实用。
本文介绍的是一种用数据库系统进行系统配置信息存储管理及应用的一个简便而通用的方法。以往看到很多软件产品,在系统运行参数配置及管理方面,设计了一大堆表,每个表,永远只有一条记录;每增加一个配置数据项,就新增一张表,还是永远只存一条记录。通过与系统设计开发的工程师闲聊、沟通发现,他们这样设计主要是基于2方面的原因:一方面是运行参数的配置值的数据类型往往不同,数据库表字段的数据类型不支持变体的数据类型;另一方方面,由于各个参数配置的逻辑涵义差异很大,参数配置的存储管理功能很难通用。
2【功能需求】
一个小型的应用软件,需要配置一些系统的运行参数,数据有数字型、浮点型、字符串型、逻辑型、时间类型等。
本系统需要管理的运行参数如下表:
3【设计思路】
本文介绍一种本人在软件项目工作中,经常采用的一种系统运行参数配置信息的存储管理及应用的通用方法:一张固定的参数配置表、一个通用的参数配置信息管理类,能够非常简便而有效的解决这类实际问题。
设计一张通用的系统参数配置信息表,能够满足上诉应用需求,以后每增加一个配置信息,就往表里面新增一条记录。
设计一个通用的配置信息管理类,不仅满足上诉应用需求,当有新增需求时能够非常、快捷、方便的满足。
说明:本文阐述的是针对上诉需求的参数配置信息管理和应用的一个实例,如果在具体应用中还有图片等其他二进制信息要作为参数进行配置、管理时,只需要将后面的数据库设计的数据类型调整为能够兼容二进制信息的类型(例如:blob)即可。
4【数据库设计】
此类应用在数据库设计方面,面临的2个突出问题:通过一张表中的同一个字段来存储数据类型不同的信息、同一张表内各行数据的逻辑含义不同。
针对第一个问题,本设计采用一个相对通用的数据类型来存储配置结果,具体的业务数据类型,增加一个数据类型项来标识。
针对第二个问题,为了准确区分同一张表内,各行数据的逻辑含义,本方案采用[Key - Value]对的方式来实现:用Key来标识配置项,用Value来标识配置值。当然,这样的设计,要求在入库是进行数据重复性检查;在同一个应用软件的参数配置需求中,也不会出现一个配置项,有多个不同的值。
具体的数据库表结构如下图:
数据库表结构说明如下:
参数配置信息示例:
5【代码实现】
数据结构定义:
功能代码: