I once wrote a pretty decent schema migration tool that fits most if not all of 
these requirements.  It was built for the Kohana PHP framework, but a lot of it 
is pretty independent of that.  If someone ends up working on this I'd love to 
help and maybe share some code and ideas.  

-Andrew Otto

http://ottomata.org
http://www.flickr.com/photos/OttomatonA
http://www.couchsurfing.org/people/otto


On Apr 25, 2012, at 12:58 PM, Asher Feldman wrote:

> I am generally in favor of all of this and in the meeting that proceeded
> Rob's email, proposed that we develop a new schema migration tool for
> mediawiki along similar lines. Such a beast would have to work in all
> deployment cases without modifications (stock single wiki installs and at
> wmf with many wikis across multiple masters with tiered replication), be
> idempotent when run across many databases, track version and state per
> migration, and include up/down steps in every migration.
> 
> There are opensource php migration tools modeled along those used by the
> popular ruby and python frameworks. I deployed
> https://github.com/davejkiger/mysql-php-migrations at kiva.org a couple
> years ago where it worked well and is still in use.  Nothing will meet our
> needs off the shelf though.  A good project could at best be forked into
> mediawiki with modifications if the license allows it, or more likely serve
> as a model for our own development.
> 
> On Tue, Apr 24, 2012 at 11:27 PM, Faidon Liambotis 
> <fai...@wikimedia.org>wrote:
> 
>> 
>> In other systems I've worked before, such problems have been solved by
>> each schema-breaking version providing schema *and data* migrations for
>> both forward *and backward* steps.
> 
> 
>> This means that the upgrade transition mechanism knew how to add or
>> remove columns or tables *and* how to fill them with data (say by
>> concatenating two columns of the old schema). The same program would
>> also take care to do the exact opposite steps in a the migration's
>> backward method, in case a rollback was needed.
>> 
> 
> Down migrations aid development; I find them most useful as documentation
> of prior state, making a migration readable as a diff.  They generally
> aren't useful in production environments at scale though, which developers
> removed from the workings of production need to be aware of.  Even with
> transparent execution of migrations, the time it takes to apply changes
> will nearly always be far outside of the acceptable bounds of an emergency
> response necessitating a code rollback.  So except in obvious cases such as
> adding new tables, care is needed to keep forward migration backwards
> compatible with code as much as possible.
> 
> The migrations themselves can be kept in the source tree, perhaps even
>> versioned and with the schema version kept in the database, so that both
>> us and external users can at any time forward their database to any
>> later version, automagically.
> 
> 
> Yep. That we have to pull in migrations from both core and many extensions
> (many projects, one migration system) while also running different sets of
> extensions across different wikis intermingling on the same database
> servers adds some complexity but we should get there.
> 
> -Asher
> _______________________________________________
> Wikitech-l mailing list
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to