You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Todd Fast <to...@toddfast.com> on 2013/05/17 07:22:08 UTC

Announcing Mutagen

Mutagen Cassandra is a framework providing schema versioning and mutation
for Apache Cassandra. It is similar to Flyway for SQL databases.

https://github.com/toddfast/mutagen-cassandra

Mutagen is a lightweight framework for applying versioned changes (known as
mutations) to a resource, in this case a Cassandra schema. Mutagen takes
into account the resource's existing state and only applies changes that
haven't yet been applied.

Schema mutation with Mutagen helps you make manageable changes to the
schema of live Cassandra instances as you update your client software, and
is especially useful when used across development, test, staging, and
production environments to automatically keep schemas updated.

This is a minimal but functional initial release, and I appreciate bug
reports, suggestions and pull requests.

Best,
Todd

Re: Announcing Mutagen

Posted by Edward Capriolo <ed...@gmail.com>.
Now that comparators can be changed I am internally wondering if every
column, rowkey,value in c* should be a dynamic composite and then
everything can "evolve"


On Fri, May 17, 2013 at 5:35 AM, Todd Fast <to...@toddfast.com> wrote:

> Hi Blair--
>
> Thanks for digging into the code. I did indeed experiment with longer
> timeouts and the result was that trying to obtain the lock hung for
> whatever amount of time I set the timeout for. I am not an expert on
> Astyanax and haven't debugged my use of that recipe yet; I don't even know
> if I've configured it correctly. Perhaps you have some guidance?
>
> (Funny you mention your own migration framework--Mutagen is the second one
> I've done for Cassandra. The first one, a plugin for Mokol, also had schema
> rollbacks and some other features, but was only command-line.)
>
>
> On Thu, May 16, 2013 at 11:06 PM, Blair Zajac <bl...@orcaware.com> wrote:
>
>> On 5/16/13 10:22 PM, Todd Fast wrote:
>>
>>> Mutagen Cassandra is a framework providing schema versioning and
>>> mutation for Apache Cassandra. It is similar to Flyway for SQL databases.
>>>
>>> https://github.com/toddfast/**mutagen-cassandra<https://github.com/toddfast/mutagen-cassandra>
>>>
>>> Mutagen is a lightweight framework for applying versioned changes (known
>>> as mutations) to a resource, in this case a Cassandra schema. Mutagen
>>> takes into account the resource's existing state and only applies
>>> changes that haven't yet been applied.
>>>
>>
>> Hi Todd,
>>
>> Looking at your code and you have the ColumnPrefixDistributedRowLock
>> commented out.  Could it be that the mutation is taking longer than a
>> second to run?  Are they only happening during testing simultaneous
>> updates?  Maybe they aren't being cleaned up?
>>
>> Funny timing, I'm working on porting Scala Migrations [1] to Cassandra
>> and have a working implementation.  It's not as fancy as Scala Migrations
>> (it doesn't scan a package for migration subclasses and it currently
>> doesn't do rollbacks) but it gets the basics done.  Hoping to release code
>> in the near future.
>>
>> Differences from Mutagen:
>>
>> 1) Mutations are written only in Scala.
>> 2) Since its a new project, it uses a Java Driver session instead of a
>> Astyanax connection since I only intend to use CQL3 tables.
>>
>> Blair
>>
>> [1] http://code.google.com/p/**scala-migrations/<http://code.google.com/p/scala-migrations/>
>>
>
>

Re: Announcing Mutagen

Posted by Todd Fast <to...@toddfast.com>.
Hi Blair--

Thanks for digging into the code. I did indeed experiment with longer
timeouts and the result was that trying to obtain the lock hung for
whatever amount of time I set the timeout for. I am not an expert on
Astyanax and haven't debugged my use of that recipe yet; I don't even know
if I've configured it correctly. Perhaps you have some guidance?

(Funny you mention your own migration framework--Mutagen is the second one
I've done for Cassandra. The first one, a plugin for Mokol, also had schema
rollbacks and some other features, but was only command-line.)


On Thu, May 16, 2013 at 11:06 PM, Blair Zajac <bl...@orcaware.com> wrote:

> On 5/16/13 10:22 PM, Todd Fast wrote:
>
>> Mutagen Cassandra is a framework providing schema versioning and
>> mutation for Apache Cassandra. It is similar to Flyway for SQL databases.
>>
>> https://github.com/toddfast/**mutagen-cassandra<https://github.com/toddfast/mutagen-cassandra>
>>
>> Mutagen is a lightweight framework for applying versioned changes (known
>> as mutations) to a resource, in this case a Cassandra schema. Mutagen
>> takes into account the resource's existing state and only applies
>> changes that haven't yet been applied.
>>
>
> Hi Todd,
>
> Looking at your code and you have the ColumnPrefixDistributedRowLock
> commented out.  Could it be that the mutation is taking longer than a
> second to run?  Are they only happening during testing simultaneous
> updates?  Maybe they aren't being cleaned up?
>
> Funny timing, I'm working on porting Scala Migrations [1] to Cassandra and
> have a working implementation.  It's not as fancy as Scala Migrations (it
> doesn't scan a package for migration subclasses and it currently doesn't do
> rollbacks) but it gets the basics done.  Hoping to release code in the near
> future.
>
> Differences from Mutagen:
>
> 1) Mutations are written only in Scala.
> 2) Since its a new project, it uses a Java Driver session instead of a
> Astyanax connection since I only intend to use CQL3 tables.
>
> Blair
>
> [1] http://code.google.com/p/**scala-migrations/<http://code.google.com/p/scala-migrations/>
>

Re: Announcing Mutagen

Posted by Blair Zajac <bl...@orcaware.com>.
On 5/16/13 10:22 PM, Todd Fast wrote:
> Mutagen Cassandra is a framework providing schema versioning and
> mutation for Apache Cassandra. It is similar to Flyway for SQL databases.
>
> https://github.com/toddfast/mutagen-cassandra
>
> Mutagen is a lightweight framework for applying versioned changes (known
> as mutations) to a resource, in this case a Cassandra schema. Mutagen
> takes into account the resource's existing state and only applies
> changes that haven't yet been applied.

Hi Todd,

Looking at your code and you have the ColumnPrefixDistributedRowLock 
commented out.  Could it be that the mutation is taking longer than a 
second to run?  Are they only happening during testing simultaneous 
updates?  Maybe they aren't being cleaned up?

Funny timing, I'm working on porting Scala Migrations [1] to Cassandra 
and have a working implementation.  It's not as fancy as Scala 
Migrations (it doesn't scan a package for migration subclasses and it 
currently doesn't do rollbacks) but it gets the basics done.  Hoping to 
release code in the near future.

Differences from Mutagen:

1) Mutations are written only in Scala.
2) Since its a new project, it uses a Java Driver session instead of a 
Astyanax connection since I only intend to use CQL3 tables.

Blair

[1] http://code.google.com/p/scala-migrations/