[openstack-dev] [DB][Migrations] Switching to using of Alembic

Roman Podolyaka rpodolyaka at mirantis.com
Tue Jul 16 15:51:14 UTC 2013


Hello, stackers!

Most of you who is interested in work around DB in OpenStack must have read
this thread [1] started by Boris Pavlovic. Boris made an overview of the
work our team is doing to make DB code better.

One of our main goals is to switch from sqlalchemy-migrate to Alembic for
applying of DB schema migrations. sqlalchemy-migrate was abandoned for a
long time, and even now when it's become adopted by OpenStack community,
we'd better use a project which is supported by upstream (especially in the
case when the author of this project is the same person who also authored
SQLAlchemy).

The switch isn't going to be simple though. We have a few problems:

1) stable releases must be supported for some time, so we can't switch from
migrate to alembic immediately

The switch should probably be made when previous migrations scripts are
"compacted", so all new migrations scripts will use alembic. Switching of
such big projects as Nova is hard, so we decided to gain some experience
with porting of smaller ones first. Alexei Kornienko is currently working
on adding support of Alembic migrations in Ceilometer [3].

Our long term goal is to switch all projects from using of
sqlalchemy-migrate to Alembic.

2) we rely on schema migrations to set up an SQLite database for running
tests

Nova and possibly other projects use schema migrations to set up an SQLite
database for running tests. Unfortunately, we can't use models definitions
for generation of initial DB schema, because those definitions do not
correspond migration scripts. Our team is working on fixing of this issue
[2].

As you may now SQLite has limited support of ALTER DDL statements [4]. Nova
code contains a few auxiliary functions to make ALTER work in SQLite.
Unfortunately, Alembic doesn't support ALTER in SQLite on purpose [5]. In
order to run our tests on SQLite right now using Alembic as a schema
migration tool, we should add ALTER support to it first.

We are going to implement ALTER support in Alembic for SQLite in the next
few weeks.

As always, your comments in ML and reviews are always welcome.

Thanks,
Roman

[1] http://lists.openstack.org/pipermail/openstack-dev/2013-July/011253.html
[2]
https://blueprints.launchpad.net/nova/+spec/db-sync-models-with-migrations
[3]
https://review.openstack.org/#/q/status:open+project:openstack/ceilometer+branch:master+topic:bp/convert-to-alembic,n,z
[4] http://www.sqlite.org/lang_altertable.html
[5] https://bitbucket.org/zzzeek/alembic
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130716/65c9e993/attachment.html>


More information about the OpenStack-dev mailing list