[openstack-dev] Online Migrations.
Mike Bayer
mbayer at redhat.com
Mon Jun 15 15:54:23 UTC 2015
On 6/15/15 9:21 AM, Philip Schwartz wrote:
> This weekend, I discussed the requested change at length with Mike. I
> think before moving forward, we need a better understanding of what is
> trying to be achieved.
>
> Request: Add the ability to verify migrations are completed prior to
> contract.
>
> As discussed here previously, I worked out a setup using the .info
> dict of the Column’s that are to be removed or Migrated. But came
> across and issue that is more concerning.
>
> In order to contract the DB, the columns need to be removed from the
> Model Classes. We can do this just prior to scanning the Model Classes
> to determine schema migrations, but the columns would still exist in
> the Model Class for all other loading of the model, i.e. at ORM
> query’s and such.
>
> After discussing this with Mike, there looks to be 3 options:
>
> 1. Remove the columns at contract time and also build a mechanism to
> scan for the same .info entry at Query time to prevent it from
> being used.
> 2. Remove the columns at contract time and create a mechanism that on
> load of data models once the migration is complete would remove
> the columns (forced restart of service once migration is done will
> allow the ORM queries to no longer see the column)
> 3. Build the controls into our process with a way of storing the
> current release cycle information to only allow contract’s to
> occur at a set major release and maintain the column in the model
> till it is ready to be removed major release + 1 since the
> migration was added.
>
>
> Personally, for ease of development and functionality, I think the
> best option is the 3rd as it will not require reinventing the wheel
> around data loading and handling of already loaded data models that
> could affect ORM queries.
Well one advantage to the way "contract" is totally automated here is
that as long as the ORM models have a column X present, "contract" won't
remove it. What problem would storing the release cycle information
solve ? (also by "store" you mean a DB table? ).
I'm writing out a spec for Neutron this week that reboots the OSM
concept without dropping the concept of versioned migration files and
versioning as I've discussed. As I've mentioned elsewhere i hope to
enhance Alembic's functionality so that Nova's current OSM approach as
well as the file/ version-number based approach can both leverage the
same codebase for generating the stream of expand/contract steps.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150615/11b925cd/attachment.html>
More information about the OpenStack-dev
mailing list