On 2012-08-13 22:41, Alex Huang wrote:
Shouldn't be a problem.

At least, we've thought about how this should work before.  I might
even have a bug for it.

The one that I really have not thought through and I have raised on
this list and worth raising again is the following.

CloudStack Plugins generally will have some tables that are specific
for it.  We have now put each plugin into its own project so it makes
sense that portion of the schema should go with the plugin as well.
This brings up two problems.

  1. Not every plugin gets deployed in every deployment so if it's
one giant schema, a lot of tables will go unused.  That's still
acceptable to me.
  2. What I'm not sure of is how to support the updates of these
plugin tables.

Any suggestions?

--Alex

-----Original Message-----
From: Will Chan [mailto:will.c...@citrix.com]
Sent: Monday, August 13, 2012 9:19 PM
To: cloudstack-dev@incubator.apache.org
Subject: RE: schema maintenance

Just need a volunteer to make this switch. Alex, perhaps someone on your
team?

Will

________________________________________
From: Darren Shepherd [dar...@godaddy.com]
Sent: Monday, August 13, 2012 8:53 PM
To: cloudstack-dev@incubator.apache.org
Subject: RE: schema maintenance

Why don't we decide that the 4.0 release is last release this way and then
going forward everything will be delta since 4.0.

Darren




> -------- Original Message --------
> Subject: Re: schema maintenance
> From: David Nalley <da...@gnsa.us>
> Date: Mon, August 13, 2012 8:22 pm
> To: cloudstack-dev@incubator.apache.org
>
>
> +1 for this. I'd ditch the monolithic altogether.
>
> On Mon, Aug 13, 2012 at 11:10 PM, Will Chan <will.c...@citrix.com> wrote: > > No argument from your thoughts on this. I think if the project wants the incremental DB changes, CS is already in a good position to support that
through our upgrade sql scripts.
> >
> > Will
> >
> > ________________________________________
> > From: Darren Shepherd [dar...@godaddy.com]
> > Sent: Monday, August 13, 2012 6:18 PM
> > To: cloudstack-dev@incubator.apache.org
> > Cc: cloudstack-dev@incubator.apache.org
> > Subject: Re: schema maintenance
> >
> > Understood, but I would venture to guess that developers (and a lot of testing) work off of the create_schema file and then prepare the upgrade as an after thought. That means the likelihood of issues in the upgrade is higher. I've just personally seen that the monolithic file gets more people looking at
it and essentially tested more.
> >
> > Having been a customer of CloudStack in the past I can tell you that old
release + delta did not always match the current create_schema.
> >
> > The concerns of the deltas getting to be too much is simply solved when you get to that point. In practice the time it takes to run a bunch of deltas to create a DB from scratch is not much slower than the monolithic file because
DDL runs real fast on an empty DB.
> >
> > Darren
> >
> > Sent from my iPhone
> >
> > On Aug 13, 2012, at 5:58 PM, Will Chan <will.c...@citrix.com> wrote:
> >
> >>
> >>
> >>
> >>> -----Original Message-----
> >>> From: Chip Childers [mailto:chip.child...@sungard.com]
> >>> Sent: Monday, August 13, 2012 5:36 PM
> >>> To: cloudstack-dev@incubator.apache.org
> >>> Subject: Re: schema maintenance
> >>>
> >>> On Mon, Aug 13, 2012 at 8:06 PM, Darren Shepherd
> >>> <dar...@godaddy.com> wrote:
> >>>> Has there been any talk about not maintaining a monolithic
> >>>> create_schema.sql and doing a more DB migrate style?  From a
> >>>> supportability perspective its way easier if your SQL is just
> >>>> always deltas from the last. For example, you ship version 1 and > >>>> create schema1.sql. Version 2 you add some stuff so you create a > >>>> schema2.sql that adds what you need to the database (just delta).
> >>>> So if somebody installs from scratch they run schema1.sql and
> >>>> schema2.sql. If you already have version 1, you just run schema2.sql.
> >>>>
> >>>> This is an extremely common approach and cuts down the need to
> >>>> test the DB from scratch and upgrade.
> >>>>
> >>>> Darren
> >>>
> >>> +1 - I'm a huge fan of this, based on lots of time using the
> >>> +Django /
> >>> Python world's South framework [1]. That approach supports schema > >>> and data migrations, rolling forwards and backwards. It might not > >>> be possible to easily get to that level of sophistication, but it
> >>> makes operation of an environment much easier.
> >>>
> >>> However, there does come a time when the total number of
> >>> migrations gets out of hand. I'm not sure we can get away without a
"create db"
> >>> script that essentially does 80% of the schema build...
> >>>
> >>> -chip
> >>>
> >>> [1] - http://south.aeracode.org/
> >>
> >> CloudStack has effectively done that for upgrade scenarios. You'll see things like schema-3.0.0to3.0.1.sql files. It includes both the incremental DB changes from one version to the next but also includes migration scripts as well. We also kept the monolithic schema file for convenience but I doubt it will be that much work to simply call all the upgrade SQL rather than that
single file.
> >>
> >> The only part is I agree with Chip that after some time, it could get big and slow to apply all those sql files if you were to start from scratch. From a development point of view, that single create-schema.sql file deploys much faster than 30 separate sql files and I assume it will just get slower as time
progresses.
> >>
> >> Will


I would keep one schema and if the plugins aren't installed they you just have tables that aren't used. Maintaining multiple schema versions for one project tends to gets out of hand.

Really it makes more sense to me that plugins should be broken off into a subproject. They can then be developed, maintained, released independently. If the plugins need additional tables, they should maintain those in there own DB and have their own SQL files. If the plugins need changes to the core CS schema, then that should be updated (in a generic way) in the parent CS project.

Since CS + plugins is one big blob right now, I'd treat the plugins schemas as part of the core.

Darren

Reply via email to