cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aaron morton <aa...@thelastpickle.com>
Subject Re: About Composite range queries
Date Fri, 01 Jun 2012 01:32:04 GMT
> If you hash 4 composite keys, let's say ('A','B','C'), ('A','D','C'), ('A','E','X'), ('A','R','X'),
you have only 4 hashes or you have more?
Four

> If it's 4, how come you are able to range query for example between start_column=('A',
'D') and end_column=('A','E') and get this column ('A','D','C')

That's a slice query against columns, the column value is not hashed. The values of the column
are sorted according to the comparator which can be different to the raw byte order.

A range query is against rows. Rows keys are hashed (using the Random Partitioner) to create
tokens, and are stored in token order. 

> the composites are like chapters between the whole keys set, there must be intermediate
keys added?

Not sure what you mean. 

Cheers

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

On 1/06/2012, at 12:52 AM, Cyril Auburtin wrote:

> but sorry, I don"t undertand
> 
> If you hash 4 composite keys, let's say ('A','B','C'), ('A','D','C'), ('A','E','X'),
('A','R','X'), you have only 4 hashes or you have more?
> 
> If it's 4, how come you are able to range query for example between start_column=('A',
'D') and end_column=('A','E') and get this column ('A','D','C')
> 
> the composites are like chapters between the whole keys set, there must be intermediate
keys added?
> 
> 
> 2012/5/31 aaron morton <aaron@thelastpickle.com>
> it is hashed once. 
> 
> To the partitioner it's just some bytes. Other parts of the code car about it's structure.

> 
> Cheers
> 
> -----------------
> Aaron Morton
> Freelance Developer
> @aaronmorton
> http://www.thelastpickle.com
> 
> On 31/05/2012, at 7:00 PM, Cyril Auburtin wrote:
> 
>> Thx for the answer
>> 1 more thing, a Composite key is not hashed only once I guess?
>> It's hashed the number of part the composite have?
>> So this means there are twice or 3 or ... as many keys as for normal column keys,
is it true?
>> 
>> Le 31 mai 2012 02:59, "aaron morton" <aaron@thelastpickle.com> a écrit :
>> Composite Columns compare each part in turn, so the values are ordered as you've
shown them. 
>> 
>> However the rows are not ordered according to key value. They are ordered using the
random token generated by the partitioner see http://wiki.apache.org/cassandra/FAQ#range_rp
>> 
>>> What is the real advantage compared to super column families?
>> They are faster. 
>> 
>> Cheers
>> 
>> -----------------
>> Aaron Morton
>> Freelance Developer
>> @aaronmorton
>> http://www.thelastpickle.com
>> 
>> On 29/05/2012, at 10:08 PM, Cyril Auburtin wrote:
>> 
>>> How is it done in Cassandra to be able to range query on a composite key?
>>> 
>>> "key1" => (A:A:C), (A:B:C), (A:C:C), (A:D:C), (B,A,C)
>>> 
>>> like get_range ("key1", start_column=(A,"), end_column=(A, C)); will return [
(A:B:C), (A:C:C) ] (in pycassa)
>>> 
>>> I mean does the composite implementation add much overhead to make it work?
>>> Does it need to add other Column families, to be able to range query between
composites simple keys (first, second and third part of the composite)?
>>> 
>>> What is the real advantage compared to super column families?
>>> 
>>> "key1" => A: (A,C), (B,C), (C,C), (D,C)  , B: (A,C)
>>> 
>>> thx
>> 
> 
> 


Mime
View raw message