Hi all,
  I'm working on transferring our thrift DAOs over to CQL.  It's going
well, except for 2 cases that both use multi get.  The use case is very
simple.  It is a narrow row, by design, with only a few columns.  When I
perform a multiget, I need to get up to 1k rows at a time.  I do not want
to turn these into a wide row using scopeId and scopeType as the row key.


On the physical level, my Column Family needs something similar to the
following format.


scopeId, scopeType, nodeId, nodeType :{ timestamp: 0x00 }


I've defined by table with the following CQL.


CREATE TABLE IF NOT EXISTS Graph_Marked_Nodes
( scopeId uuid, scopeType varchar, nodeId uuid, nodeType varchar, timestamp
bigint,
PRIMARY KEY ((scopeId , scopeType, nodeId, nodeType))
)WITH caching = 'all'


This works well for inserts deletes and single reads.  I always know the
scopeId, scopeType, nodeId, and nodeType, so I want to return the timestamp
columns.  I thought I could use the IN operation and specify the pairs of
nodeId and nodeTypes I have as input, however this doesn't work.

Can anyone give me a suggestion on how to perform a multiget when I have
several values for the nodeId and the nodeType?  This read occurs on every
read of edges so making 1k trips is not going to work from a performance
perspective.

Below is the query I've tried.

SELECT timestamp FROM  Graph_Marked_Nodes WHERE scopeId = ? AND scopeType =
? AND nodeId IN (uuid1, uuid2, uuid3) AND nodeType IN ('foo','bar')

I've found this issue, which looks like it's a solution to my problem.

https://issues.apache.org/jira/browse/CASSANDRA-6875

However, I'm not able to get the syntax in the issue description to work
either.  Any input would be appreciated!

Cassandra: 2.0.10
Datastax Driver: 2.1.0

Thanks,
Todd

Reply via email to