Alexey Parshin wrote:
Well, Let's kill the INI part. It was my idea but it is too primitive. The SQL vs XML may be looked at from the position of the implementation. If the configuration is large - it makes sense to use SQL since it's probably cheaper to find few needed parameters. Also, database allows to update just a few parameters w/o blocking the whole thing.. However, if the config is ~ 2Kb or smaller - it may be cheaper to read the whole thing as XML.
There are two things to consider here. 1. Configuration is most likely going to be broken into multiple files. i.e. on global server config, and then one file per application 2. in most cases, where configuration will be accessed, whole thing will need to be reloaded anyways. i.e. if you change some config parameter for application, you need to restart it, so that it takes effect as it should.
There is one more solution, too. It's possible to create a config server :)
I know why you are thinking about that ;-)
That would be a combination of two approaches. An object that would access such server should just always request needed parameters, and doesn't have to load the whole config file. The interface could be like: servlet.connectToConfig("ServletClass:configClass"); CParam p = servlet.getParam("Param1"); servlet.getParam("Param1") = p;
I think the makes least sense - it's just an extra communications overhead, and code complexity, but is not different from SQL approach.
On 4/26/05, Ilya A. Volynets-Evenbakh <email@example.com> wrote:So there are three propositions as to how exactly to store configuration. 1. Use XML 2. Use SQL database 3. Use INI format Each of them have advantages and disadvantages, so think right thing to do is to provide generic interface, and few implementations. Now, there are few choises as to interface itself. 1. Provide very generic chierarchical interface: config.getNode(parent=NULL, name) node.getParam(node,name) 2. Provide somewhat specialized interface config.getParameter(name) config.getApplicationList() application.getParameter(name) application.getServlets() servlet.getDSOPath() servlet.getParameter(name) 3. Provide strictly structured interface Pretty much same as 2, but also provide mandatory params i.e. config.getDefaultSessionTimeout(); application.getSessionTimeout() application.getName() application.getDesc() Thoughts? -- Ilya A. Volynets-Evenbakh Total Knowledge. CTO http://www.total-knowledge.com
Authoright © Total Knowledge: 2001-2008