什么是人们在数据库中存储应用程序配置数据的首选方法.从我自己过去做过这个,我已经用了两种方法做到了.
您可以创建一个存储键/值对的表,其中key是config选项的名称,value是其值.专业的是添加新值很容易,您可以使用相同的例程来设置/获取数据.缺点是您有无类型数据作为值.
或者,您可以对配置表进行硬编码,每列都是值的名称及其数据类型.这样做的缺点是更多维护设置新值,但它允许您输入类型数据.
使用两者后,我的偏好在于第一个选项,因为它可以更快地进行设置,但是它也更具风险,并且在查找数据时可以(略微)降低性能.有没有人有任何替代方法?
更新
有必要将信息存储在数据库中,因为如下所述,可能存在需要以相同方式配置的程序的多个实例,以及可能使用相同值的存储过程.
您可以展开选项1以获得第3列,从而提供数据类型.您的应用程序可以使用此数据类型列来转换值.
但是,如果配置文件不是一个选项,我会选择选项1.选项1的另一个优点是您可以将其读入Dictionary对象(或等效对象),以便在您的应用程序中轻松使用.
由于配置通常可以存储在文本文件中,因此字符串数据类型应足以存储配置值.如果您使用的是托管语言,则代码应该知道数据类型应该是什么,而不是数据库.
更重要的是,请考虑以下配置:
层次结构:显然,配置将受益于层次结构
版本控制:考虑能够回滚到特定日期生效的配置的好处.
分发:有时候,能够集群应用程序可能会很好.某些属性可能应该是群集中每个节点的本地属性.
文档:根据您是否有Web工具或其他内容,可能很好地存储有关使用它的代码附近的属性的文档.(代码注释对此非常好.)
通知:代码如何知道在配置库中某处进行了更改?
就个人而言,我喜欢处理配置的倒置方式,其中配置属性被注入到模块中,这些模块不知道值来自何处.这样,配置管理系统可能非常复杂或非常简单,具体取决于您(当前)的需求.