DB中的配置信息?

时间:2011-07-22 20:33:48

标签: configuration app-config configuration-management

我在app.config中有很多东西,当需要更改时,需要重新启动应用程序。我的24x7网络服务器系统不好(它真的是24x7,甚至不是23x7)。我想使用一个好的策略将配置信息保存在数据库表中,并根据需要查询/使用它。我用谷歌搜索了一下,然后干涸了。在重新发明轮子之前,有没有人有任何建议?

感谢。

1 个答案:

答案 0 :(得分:0)

我最近的应用程序需要这个,并且不能使用任何特定于应用程序服务器的技术,因为我需要在cronjobs上运行一些控制台应用程序来访问它们。

我基本上创建了几个小表来创建一个注册表样式的配置数据库。我有一个键表(它们都有父键,所以它们可以按树结构排列)和一个附加到键的值表。所有键和值都已命名,因此我的访问函数如下所示:

openKey("/my_app");
createKey("basic_settings");
openKey("basic_settings");
createValue("log_directory","c:\logs");
getValue("/my_app/basic_settings","log_directory");

树结构允许您在逻辑上分隔相似的数据(例如,您可以在几个不同的键下具有“log_directory”值),并避免在属性文件中找到过于冗长的名称。

所有值都只是字符串(db中的varchar2),因此在转换布尔值和数字时会有一些开销:但它只是配置数据,所以谁关心?

我还创建了一个“settings_changed”值,其中包含一个日期时间字符串:所以任何应用程序都可以快速判断是否需要刷新它的配置(显然你需要记住在更改任何内容时设置它)。

可能已经有工具来做这种事情了:但这只是一天的编码和工作。我添加了命令行工具来编辑和上传/下载部分或全部树,然后在Java Swing中创建了一个快速的图形编辑器。