I'd also point out, Hector has better support for CQL3 features than
Astyanax. I contributed some stuff to hector back in December, but I
don't have time to apply those changes to astyanax.

I have other contributions in mind for hector, which I hope to work on
later this year.

On Wed, Jan 30, 2013 at 9:45 AM, Edward Capriolo <edlinuxg...@gmail.com> wrote:
> Hector has this feature because Hector is awesome sauce, but aystynsnax is
> new,sexy, and bogged about by netflix.
>
> So the new cassandra trend to force everyone to use less functional new
> stuff is at work here making you wish for something that already exists
> elsewhere.
>
>
> On Wednesday, January 30, 2013, Hiller, Dean <dean.hil...@nrel.gov> wrote:
>> I recall someone doing some work in Astyanax and I don't know if it made
>> it back in where astyanax would retry at a lower CL level when 2 nodes were
>> down so things could continue to work which was a VERY VERY cool feature.
>> You may want to look into that….I know at some point, I plan to.
>>
>> Later,
>> Dean
>>
>> From: Edward Capriolo
>> <edlinuxg...@gmail.com<mailto:edlinuxg...@gmail.com>>
>> Reply-To: "user@cassandra.apache.org<mailto:user@cassandra.apache.org>"
>> <user@cassandra.apache.org<mailto:user@cassandra.apache.org>>
>> Date: Wednesday, January 30, 2013 7:31 AM
>> To: "user@cassandra.apache.org<mailto:user@cassandra.apache.org>"
>> <user@cassandra.apache.org<mailto:user@cassandra.apache.org>>
>> Subject: Re: Node selection when both partition key and secondary index
>> field constrained?
>>
>> Any query is going to fail quorum + rf3 + 2 nodes down.
>>
>> One thing about 2x indexes (both user defined and built in) is that
>> finding an answer using them requires more nodes to be up then just a single
>> get or slice.
>>
>> On Monday, January 28, 2013, Mike Sample
>> <mike.sam...@gmail.com<mailto:mike.sam...@gmail.com>> wrote:
>>> Thanks Aaron.   So basically it's merging the results 2 separate queries:
>>> Indexed scan (token-range) intersect foo.flag_index=true     where the
>>> latter query hits the entire cluster as per the secondary index FAQ entry.
>>> Thus the overall query would fail if LOCAL_QUORUM was requested, RF=3 and 2
>>> nodes in a given replication group were down. Darn.  Is there any way of
>>> efficiently getting around this (ie scope the query to just the nodes in the
>>> token range)?
>>>
>>>
>>>
>>>
>>> On Mon, Jan 28, 2013 at 11:44 AM, aaron morton
>>> <aa...@thelastpickle.com<mailto:aa...@thelastpickle.com>> wrote:
>>>>
>>>> It uses the index...
>>>>
>>>> cqlsh:dev> tracing on;
>>>> Now tracing requests.
>>>> cqlsh:dev>
>>>> cqlsh:dev>
>>>> cqlsh:dev> SELECT id, flag from foo WHERE TOKEN(id) > '-9939393' AND
>>>> TOKEN(id) <= '0' AND flag=true;
>>>>
>>>> Tracing session: 128cab90-6982-11e2-8cd1-51eaa232562e
>>>>
>>>>  activity                                           | timestamp    |
>>>> source    | source_elapsed
>>>>
>>>> ----------------------------------------------------+--------------+-----------+----------------
>>>>                                  execute_cql3_query | 08:36:55,244 |
>>>> 127.0.0.1 |              0
>>>>                                   Parsing statement | 08:36:55,244 |
>>>> 127.0.0.1 |            600
>>>>                                  Peparing statement | 08:36:55,245 |
>>>> 127.0.0.1 |           1408
>>>>                       Determining replicas to query | 08:36:55,246 |
>>>> 127.0.0.1 |           1924
>>>>  Executing indexed scan for (max(-9939393), max(0)] | 08:36:55,247 |
>>>> 127.0.0.1 |           2956
>>>>  Executing single-partition query on foo.flag_index | 08:36:55,247 |
>>>> 127.0.0.1 |           3192
>>>>                        Acquiring sstable references | 08:36:55,247 |
>>>> 127.0.0.1 |           3220
>>>>                           Merging memtable contents | 08:36:55,247 |
>>>> 127.0.0.1 |           3265
>>>>                        Scanned 0 rows and matched 0 | 08:36:55,247 |
>>>> 127.0.0.1 |           3396
>>>>                                    Request complete | 08:36:55,247 |
>>>> 127.0.0.1 |           3644
>>>>
>>>>
>>>> It reads from the secondary index and discards keys that are outside of
>>>> the token range.
>>>>
>>>> Cheers
>>>>
>>>>
>>>> -----------------
>>>> Aaron Morton
>>>> Freelance Cassandra Developer
>>>> New Zealand
>>>>
>>>> @aaronmorton
>>>> http://www.thelastpickle.com
>>>>
>>>> On 28/01/2013, at 4:24 PM, Mike Sample
>>>> <mike.sam...@gmail.com<mailto:mike.sam...@gmail.com>> wrote:
>>>>
>>>> > Does the following FAQ entry hold even when the partion key is also
>>>> > constrained in the query (by token())?
>>>> >
>>>> > http://wiki.apache.org/cassandra/SecondaryIndexes:
>>>> > ==
>>>> >    Q: How does choice of Consistency Level affect cluster availability
>>>> > when using secondary indexes?
>>>> >
>>>> >    A: Because secondary indexes are distributed, you must have CL
>>>> > nodes available for all token ranges in the cluster in order to complete 
>>>> > a
>>>> > query. For example, with RF = 3, when two out of three consecutive nodes 
>>>> > in
>>>> > the ring are unavailable, all secondary index queries at CL = QUORUM will
>>>> > fail, however secondary index queries at CL = ONE will succeed. This is 
>>>> > true
>>>> > regardless of cluster size."
>>>> > ==
>>>> >
>>>> > For example:
>>>> >
>>>> > CREATE TABLE foo (
>>>> >     id uuid,
>>>> >     seq_num bigint,
>>>> >     flag boolean,
>>>> >     some_other_data blob,
>>>> >     PRIMARY KEY (id,seq_num)
>>>> > );
>>>> >
>>>> > CREATE INDEX flag_index ON foo (flag);
>>>> >
>>>> > SELECT id, flag from foo WHERE TOKEN(id) > '-9939393' AND TOKEN(id) <=
>>>> > '0' AND flag=true;
>>>> >
>>>> > Would the above query with LOCAL_QUORUM succeed given the following?
>>>> > IE is the token range used first trim node selection?
>>>> >
>>>> > * the cluster has 18 nodes
>>>> > * foo is in a keyspace with a replication factor of 3 for that data
>>>> > center
>>>> > * 2 nodes in one of the replication groups are down
>>>> > * the token range in the query is not in the range of the down nodes
>>>> >
>>>> >
>>>> > Thanks in advance!
>>>>
>>>
>>>
>>

Reply via email to