How can you tell if the config is changed? You either poll it every time with SELECT (SQL) or see if the timestamp of the database file has changed. (If SQLite works this way. I never had the need to check on the file status.) This costs time as well.
Other web servers have a config file and reload it after getting signalled.
But: It's a bit early to say what Zed intends with SQLite. Maybe mongrel2 gets a configuration interface like Cherokee and only reads the DB on startup and after getting signalled.
With a sqlite3 based "config file" you'll be able to use real, turing complete languages to configure it, create control pannels, distribute the config reliably, and you can run .schema to figure out how it's structured.
It's also incredibly reliable and has many great features for this kind of thing.
I guess running some programming script isn't that bad to configure the server - but right now, people do a lot of basic operations on configs via shell scripting which do the deployment. Using bash/sh to interact with sqlite doesn't sound very inviting.
1. a straw man. The Format is very generic, only sections and key-value-pairs. A fairer comparison would be against httpd.conf, or other languages actually used for web server config.
2. Easy to parse, because there are tony of implementations already.
3. Static, like a SQL database, although Zed[1] and others[2] argued we need Turing-complete extension and configuration languages like Ruby.
[1] http://vimeo.com/2723800 [2] http://lambda-the-ultimate.org/node/3606
insert into rules (rule) values('don\'t require auth for /, but do require auth for /foo/*.jpg')
The use of a db is more to create a standard networkable interface for other clients to read/modify the config than a statement about the semantics of the config syntax.
data = config_file.read()
"insert into config (config) values ('%s')" % data
Are you confusing offline representation with a runtime structure?