Make something up. It's very simple. How would you do it?
For migration? Just copy it over. As far as revision tracking, let's assume your config table looks something like this:
Table: clientConfig
------------------
clientRef
paramID
paramValue
You can set a trigger(s) such that every time a record is added, changed, or deleted, the change is copied to a log that looks something like:
Table: clientConfig
------------------
clientRef
paramID
paramValue
changeType // add, change, or delete
changedWhen
who // login ID of changer (if avail.)
With this info, one can recreate any time period and study all changes. (I here some RDBMS have such "delta-log" features already built in.)
So you've never worked some place that has requirements like this.
There are a lot of domains and situations that I have never encountered. I just know that tables are more useful and flexible than files most of the time. If you found an exception, so be it. Nothing is 100% always the best solution.
Nope. Assembler and GOTOs take considerably more development effort.
So does dealing with Flinstonian file systems.
They're more powerful for DATA, not CODE.
And config info is data.
Oh, really? Care to back that up? What headaches?
I can't easily query the file system to find or view files how I want. Yeah, I know, if I learned grep and other file utils well I could probably eventually do the same, but why learn two query languages? Plus file systems don't have indexes on attributes outside of the tree. Thus, it has to do a sequential search for many operations. I have heard multiple times from developers how they wish they could query the file system using SQL and/or add extra attributes to files or directories to mark stuff for various purposes. I have seen companies jump thru hoops because they couldn't add custom file attributes. They have to keep a seperate list(s) of file info.
Hardly primitive. I can sit down with a blank system, type one command (bexvm build -d SID) and create an entire, running copy of our system, loaded config data, compiled code, everything. Unattended. This is primitive?
How does tabling info preclude the use of a single command to initiate everything?