[development] Separating configuration vs data tables
Moshe Weitzman
weitzman at tejasa.com
Fri Jun 9 16:56:40 UTC 2006
> My suggestion is to identify which database tables contain
> administrative or configuration data vs. which tables contain content
> and then store them in separate databases (brief research indicates that
> MySQL supports cross-database queries but Postgres does not, so this
> functionality would be turned off with Postgres). Ideally, it would
> then be possible to clone both databases, add modules or change settings
> in the sandbox until happy, and then copy back only the admin/config
> database and any filesystem mods. In one step, the production system
> would be upgraded.
>
> We would have to decide which tables fall into each category and
> possibly refactor some tables if they span both categories. Perhaps it
> is not possible to separate them all cleanly in this way, but it seems
> worth trying.
>
right and right. it would be outstanding if we could pull this off.
Migrating changes to production is a major headache, and this would make it
really easy to roll forward and even roll back.
i used to work at a company which worked this way. we called relatively
static tables 'domain' tables and relatively dynamic 'transactional'. i like
your terms of configuration and content better i think.
yes, that prefix trick is very cool and requires no changes from core or
contrib. but i have a better idea. Lets store this mapping in a new
configuration table. Then, modules or the installer can write into this
table. we just need to run this pseudocode in settings.php where the
$db_prefix stuff is now:
// set prefixes for each table as specified by the prefixes table
$sql = SELECT prefix, name FROM prefixes;
$result = db_query($sql);
while ($row = db_fetch_object($result) {
$db_prefix[$row->name] = $row->prefix;
}
from there on, queries will always hit the right DB.
as a next step, i sigest identifying which tables go where and resolving
splitting up ambigous tables
More information about the development
mailing list