My strongly held opinion is that configuration information belongs in a file, under revision control.

If that configuration information has a good reason to go into a database, it should still be maintained in a file, under revision control, and then the database table should occasionally be reloaded from said file.

There are many reasons for this design choice. The key one is that sane organizations do not develop against their production database. Instead they have a separate development environment that they can work against, and then they have a release process into production. (Often this release process involves more databases, for instance you may have one devoted to QA, and another for load testing.) If you store the configuration in the database, this release process quickly becomes more complicated and risky. Furthermore the development process also runs into issues when people need to do things like change a configuration temporarily just to test something. (What if you don't change it back correctly?)

By contrast when the information is in a configuration file, under revision control, then necessary configuration changes get released in sync with the code that it is connected to. Furthermore a slew of development problems are now handled by your revision control system. You can ask, and answer, important questions such as, "Here's when we changed Y, that was after this problem started being reported, so it cannot be the cause."

This opinion is strong enough that I would rather not work with companies which make the design mistake of keeping configuration information in a database. Just as I would prefer not to work at an organization without a development environment, or which does not use revision control. (The latter two are more important than this design mistake though.)

UPDATE: s/avoid working/rather not work/ and added clarifying comment.


In reply to Re: Storing config data - RDBMS vs File? by tilly
in thread Storing config data - RDBMS vs File? by Seumas

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.