CPPSERV


Home Projects Jobs Clientele Contact

cppserv


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Configuration, take2



Well, they will be shared between threads, if that's what you mean,
but sharing them between processes? We only have one process per server
anyways.

Alexey Parshin wrote:

Oh, and there is one more thing :)

If you wanna do it real fast - we may have shared memory configs. That
way we always keep them in one place only (not the multiple instances)
and synchronized (there is only one copy of config per servlet config
class).

On 4/26/05, Alexey Parshin <alexeyp@gmail.com> 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 is one more solution, too. It's possible to create a config
server :) 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;

On 4/26/05, Ilya A. Volynets-Evenbakh <ilya@total-knowledge.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


--
Alexey Parshin,

Senior DBA,
Tactical Telesolutions,
San Francisco


Authoright © Total Knowledge: 2001-2008