This is perhaps only tangentially related, but I've been wondering for a while whether
downtime for
various upgrades / database conversions could be minimised by using some kind of
"changelog mode".
The idea being that a copy could be made of the database and sent somewhere else for
processing [I'm
not sure where, since processing two copies of en: on one server doesn't seem very
likely, but
that's a detail for later]; meanwhile, the original copy is still fully editable, but
creates a log
of all edits (or rather, actions that change the DB) made since the copy was taken. Then,
once the
bulk of the conversion is done, the main db goes into read-only mode while the new version
is
"patched" with the changes from the log (obviously, the code which was altering
the DB would then
have to alter the logs to match, but in many cases this shouldn't be too hard, since
the changes
themselves aren't usually complex, just time-consuming).
I'm not sure how feasible this is, or even how much would be gained in practice, but
when en: was
converted to 1.3 it seemingly had to be locked for essentially a whole day while its links
table was
rebuilt - my hunch is that it would take far less than a day to "replay" a
day's worth of edits, if
some feature could be made for them to be logged and replayed.
What does anyone with more experience think? Just a pipe dream, or something worth
considering as an
investment for the future?
--
Rowan Collins
[IMSoP]