H Miguel,

Are these tools free for each dev. This might not be a restriction but
would have my preference. what about redistributable parts, like
classes that are part of the engine they implement?

On Wed, Mar 12, 2014 at 10:41 AM, Miguel Ferreira
<mferre...@schubergphilis.com> wrote:
> I did a quick scan of the two tools proposed by Rajani and here's what I 
> found:
>
>
> -        Liquibase:
>
> o   With Liquibase we would need to specify the changes (in change sets) to 
> the database (using either XML, YAML, JSON or SQL).
>
> o   Each change set would then be applied by the tool to a running DB , and 
> that would entail schema changes as well as data migration.
>
> o   The data migration part seems especially simple, yet powerful.
>
> o   The tool seems to offer the rollback capability for free as long as the 
> change sets are written using its own dialect. But if the change set is 
> specified directly in SQL, there is the option to define (also in SQL) the 
> rollback procedure.
>
> -        Flyaway
>
> o   Flyaway seems to be very much similar to the DB upgrade tool ACS 
> currently has, although more elaborate and feature rich.
>
> o   It provides a java API, a command line tool, as well as maven, gradle, 
> ant and SBT support.
>
> o   Compared with Liquibase it seems to me a more free-form-like approach 
> (again, similar to what exists now in ACS)
>
> o   Incremental changes to the DB are programmed in Java and then applied by 
> the tool.
>
> o   It supports upgrades to specific versions (say from 4.2 to 3.4 when the 
> latest is 4.0 for example), as proposed by Alex Huang.
>
> Both tools seem capable of improving the current DB upgrade procedure, but 
> they both require the change I already proposed in the way ACS developers 
> maintain DB related code. They both require that changes are made 
> incrementally and independently of each other.
>
> All-in-all I think Liquibase is a better tool for the job.
>
> Cheers,
> Miguel
>
> From: Mike Tutkowski [mailto:mike.tutkow...@solidfire.com]
> Sent: dinsdag 11 maart 2014 6:52
> To: dev@cloudstack.apache.org
> Cc: Miguel Ferreira
> Subject: Re: [DISCUSS] Enabling databse upgrades on master branch
>
> Right...I'll just quickly chime in on this, but Daan described the issue well.
>
> We simply do not have a way to upgrade the DB (in an automated way) in a 
> fine-grained enough fashion during development. This is a common problem on 
> many projects...not just CloudStack.
>
> Sometimes it's easy enough to perform a manual upgrade. In these cases, I 
> would encourage developers to send out an e-mail with the [DB-CHANGE] tag and 
> let others now how to perform such an upgrade. This will decrease the number 
> of times people have to destroy and re-create their environments.
>
>
> At some point, hopefully we can have Git send out an e-mail to notify people 
> of schema changes. Then they will at least know not to fetch the latest until 
> they are ready to deal with the consequences.
>
> On Tue, Mar 11, 2014 at 4:18 AM, Daan Hoogland 
> <daan.hoogl...@gmail.com<mailto:daan.hoogl...@gmail.com>> wrote:
> Alex,
>
> That would only work in a dev environment, would it? so running maven
> you could choose to upgrade your db. At the moment when your db is at
> master, how would you decide you need to upgrade beyond your prior
> commit up to the present one? Also, having pulled in new code, not
> upgrading the db is not an option with our present way of working as
> the dao object would throw all kinds of errors.
>
> What Mike is seeing is due to the granularity of the upgrade being not
> fine grained enough for his needs, not due to the absence of it, i
> agree. Any one, developer or not that dares to upgrade more often the
> by following the release schedule, thus helping us with valuable test
> data, will run into this problem.
>
>
> On Tue, Mar 11, 2014 at 11:06 AM, Alex Huang 
> <alex.hu...@citrix.com<mailto:alex.hu...@citrix.com>> wrote:
>> I'm fine with us moving toward other tools but I do want to point this out.  
>> What Mike and others are seeing is NOT due to CloudStack's schema upgrade 
>> procedure is not incremental but the fact that incremental upgrade is 
>> automatically performed when CloudStack management server is rebooted.
>>
>> As I've said in other threads, we should just replace the automatic db 
>> upgrade in CloudStack with a check for the correct version and put in a pom 
>> step to upgrade the db so a developer can upgrade the db schema when they so 
>> chooses.
>>
>> --Alex
>>
>>> -----Original Message-----
>>> From: Miguel Ferreira 
>>> [mailto:mferre...@schubergphilis.com<mailto:mferre...@schubergphilis.com>]
>>> Sent: Tuesday, March 11, 2014 2:58 AM
>>> To: dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>
>>> Cc: Alex Huang
>>> Subject: RE: [DISCUSS] Enabling databse upgrades on master branch
>>>
>>> Hi Rajani,
>>>
>>> Indeed I see the overlap with the previous discussion that is taking place. 
>>> I
>>> actually tried to chip-in that discussion.
>>> I do agree with you on introducing tools that can support the database
>>> upgrade process, but meanwhile a small change in the way developers
>>> maintain the database related code could already bring us very far.
>>>
>>> As of now I'm working on a separate project with the following roadmap:
>>> - detect potential conflicts (and collect data about them)
>>> - learn from the data collected which conflicts can we resolve 
>>> automatically,
>>> which we cannot
>>> - for the conflicts that we cannot resolve automatically, provide some
>>> guidance to the operator on how proceed with the upgrade
>>>
>>> I'm working on a repository that is not accessible from the outside of
>>> Schuberg Philis, but the intention is to move it to 
>>> github.com<http://github.com> ASAP.
>>>
>>> I'm very interested in aligning efforts with the rest of the community, and 
>>> I'm
>>> available to help out in whatever is decided. Meanwhile, I will continue to
>>> develop the ideas we have, and anyone interested in helping out with that is
>>> very welcome.
>>>
>>> If you have any ideas on how to collaborate, please let me know.
>>>
>>> Cheers,
>>> Miguel
>>>
>>> -----Original Message-----
>>> From: Rajani Karuturi 
>>> [mailto:rajani.karut...@citrix.com<mailto:rajani.karut...@citrix.com>]
>>> Sent: dinsdag 11 maart 2014 7:19
>>> To: dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>
>>> Cc: Alex Huang
>>> Subject: Re: [DISCUSS] Enabling databse upgrades on master branch
>>>
>>> Hi Miguel,
>>>
>>> This is in-line with discussions related to db changes we are having at [1] 
>>> and
>>> [2]
>>>
>>> I think it would be better to use existing tools like [liquibase] or 
>>> [flyway]
>>> instead of writing a new one. A good comparison of the both is available at
>>> [3].
>>>
>>> Also, how do we join the efforts? Is there any design doc? Are you working
>>> on a separate branch or as separate project?
>>>
>>>
>>> [1] http://markmail.org/message/r7wv36o356nolq7f
>>> [2] http://markmail.org/message/wlua3l4o5shayidf
>>> [liquibase] http://www.liquibase.org/
>>> [flyway] http://flywaydb.org/
>>> [3] http://stackoverflow.com/a/8489144/201514
>>>
>>>
>>> ~Rajani
>>>
>>>
>>>
>>> On 10-Mar-2014, at 8:35 pm, Miguel Ferreira
>>> <mferre...@schubergphilis.com<mailto:mferre...@schubergphilis.com><mailto:mferre...@schubergphilis.com<mailto:mferre...@schubergphilis.com>>>
>>> wrote:
>>>
>>> Hi all,
>>>
>>> At Schuberg Philis we are interested in upgrading our running installation 
>>> of
>>> ACS more frequently than the current release cycle.
>>> To that end, we are working on tooling to detect potentially conflict
>>> introducing changes to the ACS database and upgrade software.
>>> By conflict introducing change I mean a change to ACS that requires a clean
>>> database to start with. Thus, rendering a database of a running installation
>>> useless.
>>> Once we can detect the changes that introduce conflicts, we will start to
>>> monitor them to better understand how to mitigate and possibly work
>>> around the conflicts.
>>>
>>> One thing we can already foresee as problematic is the way the upgrade
>>> software (SQL scripts and Java classes) are being maintained. It is part of 
>>> the
>>> current way-of-working to make all kinds of changes to the upgrade software
>>> in the master branch. Say, if a create statement was introduced in a SQL
>>> script in commit C1, then the same create statement might be changed in
>>> commit C2, or even further down the line. If we want to continuously
>>> upgrade our running installation, we would not be able to upgrade past C1
>>> without at least losing some data. One possible way out of this problem is 
>>> to
>>> add an alter statement in C2 instead of changing the create statement
>>> introduced in C1.
>>>
>>> We are in favor of all changes to the upgrade software being made in such a
>>> way that they can be applied independently and incrementally. We do realize
>>> that this entails more effort from developers, but we also see the benefit 
>>> of
>>> enabling continuous delivery: we basically get a shorter feedback loop on 
>>> the
>>> quality of ACS in a real-world scenario.
>>>
>>> We are making all tools related to this open source, so anyone that shares
>>> the same interest is welcome to join the effort.
>>> Lastly, we would like to hear your opinions about the issue I described, as
>>> well as, the proposed solution and any other solutions you might come up
>>> with.
>>>
>>>
>>> Kind regards,
>>> Miguel Ferreira
>>>
>>> Mission Critical Engineer
>>> Schuberg Philis
>>> Boeingavenue 271
>>> 1119 PD Schiphol-Rijk
>>> schubergphilis.com<http://schubergphilis.com><http://schubergphilis.com>
>>>
>>> +31 207506617<tel:%2B31%20207506617>
>>> +31 610907106<tel:%2B31%20610907106>
>>> _____________________
>>>
>>
>
>
> --
> Daan
>
>
>
> --
> Mike Tutkowski
> Senior CloudStack Developer, SolidFire Inc.
> e: mike.tutkow...@solidfire.com<mailto:mike.tutkow...@solidfire.com>
> o: 303.746.7302
> Advancing the way the world uses the 
> cloud<http://solidfire.com/solution/overview/?video=play>(tm)



-- 
Daan

Reply via email to