+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

Reply via email to