>  is there any disadvantage to using supercolumns here? 
There are some http://wiki.apache.org/cassandra/CassandraLimitations

I would avoid them if you can. The one thing you cannot do when using 
CompositeTypes for column names is  a range delete. If you delete a super 
column, then you delete all the sub columns. However if you have a two part 
column name you cannot delete everything that matches "foo:*"

> They seem a little cleaner and more straightforward for my use case, since I 
> don't have the advantage of the CQL composite key thing.
If they scratch your it's grab the 1.1 beta and give them a try and let us know 
how they work for you. 
http://cassandra.apache.org/download/

Cheers


-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 15/03/2012, at 10:23 AM, John Laban wrote:

> Ahhh, ok, I thought that CQL was just being brought up to date with the 
> functionality already built into composite keys, but I guess I was mistaken 
> there.  
> 
> But I guess it's just providing a convenient abstraction, using composite 
> column names under the hood.  That's where I was confused, thanks.
> 
> So, in terms of composite column names vs supercolumns:  is the only 
> advantage to composite column names that you can do column slicing on subsets 
> of the "subcolumns"? I.e. if I don't mind loading all of the subcolumns for a 
> given supercolumn name in memory at once (since I need them all anyway), is 
> there any disadvantage to using supercolumns here?  They seem a little 
> cleaner and more straightforward for my use case, since I don't have the 
> advantage of the CQL composite key thing.
> 
> Thanks,
> John
> 
> 
> On Wed, Mar 14, 2012 at 12:53 PM, Jeremiah Jordan 
> <jeremiah.jor...@morningstar.com> wrote:
> Right, so until the new CQL stuff exists to actually query with something 
> smart enough to know about "composite keys" , You have to define and query on 
> your own.
> 
> Row Key = UUID
> Column = CompositeColumn(string, string)
> 
> You want to then use COLUMN slicing, not row ranges to query the data.  Where 
> you slice in priority as the first part of a Composite Column Name.
> 
> See the "Under the hood and historical notes" section of the blog post.  You 
> want to layout your data per the "Physical representation of the denormalized 
> timeline rows" diagram.
> Where your UUID is the "user_id" from the example, and your priority is the 
> "tweet_id"
> 
> -Jeremiah
> 
> 
> From: John Laban [j...@pagerduty.com]
> Sent: Wednesday, March 14, 2012 12:37 PM
> To: user@cassandra.apache.org
> Subject: Re: Composite keys and range queries
> 
> Hmm, now I'm really confused.
> 
> > This may be of use to you 
> > http://www.datastax.com/dev/blog/schema-in-cassandra-1-1
> 
> This article is what I actually used to come up with my schema here.  In the 
> "Clustering, composite keys, and more" section they're using a schema very 
> similarly to how I'm trying to use it.  They define a composite key with two 
> parts, expecting the first part to be used as the partition key and the 
> second part to be used for ordering.
> 
> > The hash for (uuid-1 , p1) may be 100 and the hash for (uuid-1, p2) may be 
> > 1 .
> 
> Why?  Shouldn't only "uuid-1" be used as the partition key?  (So shouldn't 
> those two hash to the same location?)
> 
> I'm thinking of using supercolumns for this instead as I know they'll work 
> (where the row key is the uuid and the supercolumn name is the priority), but 
> aren't composite row keys supposed to essentially replace the need for 
> supercolumns?
> 
> Thanks, and sorry if I'm getting this all wrong,
> John
> 
> 
> 
> On Wed, Mar 14, 2012 at 12:52 AM, aaron morton <aa...@thelastpickle.com> 
> wrote:
> You are seeing this http://wiki.apache.org/cassandra/FAQ#range_rp
> 
> The hash for (uuid-1 , p1) may be 100 and the hash for (uuid-1, p2) may be 1 .
> 
> You cannot do what you want to. Even if you passed a start of (uuid1,<empty>) 
> and no finish, you would not only get rows where the key starts with uuid1.
> 
> This may be of use to you 
> http://www.datastax.com/dev/blog/schema-in-cassandra-1-1
> 
> Or you can store all the priorities that are valid for an ID in another row.
> 
> Cheers
> 
> -----------------
> Aaron Morton
> Freelance Developer
> @aaronmorton
> http://www.thelastpickle.com
> 
> On 14/03/2012, at 1:05 PM, John Laban wrote:
> 
> > Forwarding to the Cassandra mailing list as well, in case this is more of 
> > an issue on how I'm using Cassandra.
> >
> > Am I correct to assume that I can use range queries on composite row keys, 
> > even when using a RandomPartitioner, if I make sure that the first part of 
> > the composite key is fixed?
> >
> > Any help would be appreciated,
> > John
> >
> >
> >
> > On Tue, Mar 13, 2012 at 12:15 PM, John Laban <j...@pagerduty.com> wrote:
> > Hi,
> >
> > I have a column family that uses a composite key:
> >
> > (ID, priority) -> ...
> >
> > Where the ID is a UUID and the priority is an integer.
> >
> > I'm trying to perform a range query now:  I want all the rows where the ID 
> > matches some fixed UUID, but within a range of priorities.  This is 
> > supported even if I'm using a RandomPartitioner, right?  (Because the first 
> > key in the composite key is the partition key, and the second part of the 
> > composite key is automatically ordered?)
> >
> > So I perform a range slices query:
> >
> > val rangeQuery = HFactory.createRangeSlicesQuery(keyspace, new 
> > CompositeSerializer, StringSerializer.get, BytesArraySerializer.get)
> > rangeQuery.setColumnFamily(RouteColumnFamilyName).
> >             setKeys( new Composite(id, priorityStart), new Composite(id, 
> > priorityEnd) ).
> >             setRange( null, null, false, Int.MaxValue )
> >
> >
> > But I get this error:
> >
> > me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
> > InvalidRequestException(why:start key's md5 sorts after end key's md5.  
> > this is not allowed; you probably should not specify end key at all, under 
> > RandomPartitioner)
> >
> > Shouldn't they have the same md5, since they have the same partition key?
> >
> > Am I using the wrong query here, or does Hector not support composte range 
> > queries, or am I making some mistake in how I think Cassandra's composite 
> > keys work?
> >
> > Thanks,
> > John
> >
> >
> 
> 
> 

Reply via email to