incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Algermissen <jan.algermis...@nordsc.com>
Subject Re: Versioning in cassandra
Date Mon, 02 Sep 2013 18:52:38 GMT

On 02.09.2013, at 20:44, dawood abdullah <muhammed.dawood@gmail.com> wrote:

> Requirement is like I have a column family say File
> 
> create table file(id text primary key, fname text, version int, mimetype text, content
text);
> 
> Say, I have few records inserted, when I modify an existing record (content is modified)
a new version needs to be created. As I need to have provision to revert to back any old version
whenever required.
> 

So, can version be a timestamp? Or does it need to be an integer?

In the former case, make use of C*'s ordering like so:

CREATE TABLE file (
   file_id text,
   version timestamp,
   fname text,
   ....
   PRIMARY KEY (file_id,version)
) WITH CLUSTERING ORDER BY (version DESC);

Get the latest file version with

select * from file where file_id = 'xxx' limit 1;

If it has to be an integer, use counter columns.

Jan


> Regards,
> Dawood
> 
> 
> On Mon, Sep 2, 2013 at 10:47 PM, Jan Algermissen <jan.algermissen@nordsc.com> wrote:
> Hi Dawood,
> 
> On 02.09.2013, at 16:36, dawood abdullah <muhammed.dawood@gmail.com> wrote:
> 
> > Hi
> > I have a requirement of versioning to be done in Cassandra.
> >
> > Following is my column family definition
> >
> > create table file_details(id text primary key, fname text, version int, mimetype
text);
> >
> > I have a secondary index created on fname column.
> >
> > Whenever I do an insert for the same 'fname', the version should be incremented.
And when I retrieve a row with fname it should return me the latest version row.
> >
> > Is there a better way to do in Cassandra? Please suggest what approach needs to
be taken.
> 
> Can you explain more about your use case?
> 
> If the version need not be a small number, but could be a timestamp, you could make use
of C*'s ordering feature , have the database set the new version as a timestamp and retrieve
the latest one with a simple LIMIT 1 query. (I'll explain more when this is an option for
you).
> 
> Jan
> 
> P.S. Me being a REST/HTTP head, an alarm rings when I see 'version' next to 'mimetype'
:-) What exactly are you versioning here? Maybe we can even change the situation from a functional
POV?
> 
> 
> >
> > Regards,
> >
> > Dawood
> >
> >
> >
> >
> 
> 


Mime
View raw message