incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben Browning <ben...@gmail.com>
Subject Re: Re: Range search on keys not working?
Date Wed, 09 Jun 2010 10:56:14 GMT
OPP stands for Order-Preserving Partitioner. For more information on
partitioners, look here:

http://wiki.apache.org/cassandra/StorageConfiguration#Partitioner

To do key range slices that use both start and finish parameters and
retrieve keys in-order, you need to use an ordered partitioner -
either the built-in OPP or your own custom one.

Ben

On Tue, Jun 8, 2010 at 10:26 PM, sina <ywf2008@sina.com> wrote:
> what's the mean of opp? And How can i make the "start" and "finish" useful
> and make sense?
>
>
> 2010-06-09
> ________________________________
> 9527
> ________________________________
> 发件人: Ben Browning
> 发送时间: 2010-06-02  21:08:57
> 收件人: user
> 抄送:
> 主题: Re: Range search on keys not working?
> They exist because when using OPP they are useful and make sense.
> On Wed, Jun 2, 2010 at 8:59 AM, David Boxenhorn <david@lookin2.com> wrote:
>> So why do the "start" and "finish" range parameters exist?
>>
>> On Wed, Jun 2, 2010 at 3:53 PM, Ben Browning <ben324@gmail.com> wrote:
>>>
>>> Martin,
>>>
>>> On Wed, Jun 2, 2010 at 8:34 AM, Dr. Martin Grabmüller
>>> <Martin.Grabmueller@eleven.de> wrote:
>>> > I think you can specify an end key, but it should be a key which does
>>> > exist
>>> > in your column family.
>>>
>>>
>>> Logically, it doesn't make sense to ever specify an end key with
>>> random partitioner. If you specified a start key of "aaa" and and end
>>> key of "aac" you might get back as results "aaa", "zfc", "hik", etc.
>>> And, even if you have a key of "aab" it might not show up. Key ranges
>>> only make sense with order-preserving partitioner. The only time to
>>> ever use a key range with random partitioner is when you want to
>>> iterate over all keys in the CF.
>>>
>>> Ben
>>>
>>>
>>> > But maybe I'm off the track here and someone else here knows more about
>>> > this
>>> > key range stuff.
>>> >
>>> > Martin
>>> >
>>> > ________________________________
>>> > From: David Boxenhorn [mailto:david@lookin2.com]
>>> > Sent: Wednesday, June 02, 2010 2:30 PM
>>> > To: user@cassandra.apache.org
>>> > Subject: Re: Range search on keys not working?
>>> >
>>> > In other words, I should check the values as I iterate, and stop
>>> > iterating
>>> > when I get out of range?
>>> >
>>> > I'll try that!
>>> >
>>> > On Wed, Jun 2, 2010 at 3:15 PM, Dr. Martin Grabmüller
>>> > <Martin.Grabmueller@eleven.de> wrote:
>>> >>
>>> >> When not using OOP, you should not use something like 'CATEGORY/' as
>>> >> the
>>> >> end key.
>>> >> Use the empty string as the end key and limit the number of returned
>>> >> keys,
>>> >> as you did with
>>> >> the 'max' value.
>>> >>
>>> >> If I understand correctly, the end key is used to generate an end token
>>> >> by
>>> >> hashing it, and
>>> >> there is not the same correspondence between 'CATEGORY' and 'CATEGORY/'
>>> >> as
>>> >> for
>>> >> hash('CATEGORY') and hash('CATEGORY/').
>>> >>
>>> >> At least, this was the explanation I gave myself when I had the same
>>> >> problem.
>>> >>
>>> >> The solution is to iterate through the keys by always using the last
>>> >> key
>>> >> returned as the
>>> >> start key for the next call to get_range_slices, and the to drop the
>>> >> first
>>> >> element from
>>> >> the result.
>>> >>
>>> >> HTH,
>>> >>   Martin
>>> >>
>>> >> ________________________________
>>> >> From: David Boxenhorn [mailto:david@lookin2.com]
>>> >> Sent: Wednesday, June 02, 2010 2:01 PM
>>> >> To: user@cassandra.apache.org
>>> >> Subject: Re: Range search on keys not working?
>>> >>
>>> >> The previous thread where we discussed this is called, "key is sorted?"
>>> >>
>>> >>
>>> >> On Wed, Jun 2, 2010 at 2:56 PM, David Boxenhorn <david@lookin2.com>
>>> >> wrote:
>>> >>>
>>> >>> I'm not using OPP. But I was assured on earlier threads (I asked
>>> >>> several
>>> >>> times to be sure) that it would work as stated below: the results
>>> >>> would not
>>> >>> be ordered, but they would be correct.
>>> >>>
>>> >>> On Wed, Jun 2, 2010 at 2:51 PM, Torsten Curdt <tcurdt@vafer.org>
>>> >>> wrote:
>>> >>>>
>>> >>>> Sounds like you are not using an order preserving partitioner?
>>> >>>>
>>> >>>> On Wed, Jun 2, 2010 at 13:48, David Boxenhorn <david@lookin2.com>
>>> >>>> wrote:
>>> >>>> > Range search on keys is not working for me. I was assured
in
>>> >>>> > earlier
>>> >>>> > threads
>>> >>>> > that range search would work, but the results would not
be ordered.
>>> >>>> >
>>> >>>> > I'm trying to get all the rows that start with "CATEGORY."
>>> >>>> >
>>> >>>> > I'm doing:
>>> >>>> >
>>> >>>> > String start = "CATEGORY.";
>>> >>>> > .
>>> >>>> > .
>>> >>>> > .
>>> >>>> > keyspace.getSuperRangeSlice(columnParent, slicePredicate,
start,
>>> >>>> > "CATEGORY/", max)
>>> >>>> > .
>>> >>>> > .
>>> >>>> > .
>>> >>>> >
>>> >>>> > in a loop, setting start to the last key each time - but
I'm
>>> >>>> > getting
>>> >>>> > rows
>>> >>>> > that don't start with "CATEGORY."!!
>>> >>>> >
>>> >>>> > How do I get all rows that start with "CATEGORY."?
>>> >>>
>>> >>
>>> >
>>> >
>>
>>
> __________ Information from ESET NOD32 Antivirus, version of virus signature database
5164 (20100601) __________
> The message was checked by ESET NOD32 Antivirus.
> http://www.eset.com

Mime
View raw message