well, no. my assumption is that he knows what the 5 itemTypes (or
appropriate corresponding ids) are, so he can do a known 5-rowkey
lookup. if he does not know, then agreed, my proposal is not a great fit.
could do (as originally suggested)
userId -> itemType:activityId
if you want to keep everything in the same row (again assumes that you
know what the itemTypes are). but then you can't really do a multiget,
you have to do 5 separate slice queries, one for each item type.
can also do some wacky stuff around maintaining a row that explicitly
only holds the last 10 items by itemType (meaning you have to delete the
oldest one everytime you insert a new one), but that prolly requires
read-on-write etc and is a lot messier. and you will prolly need to
worry about the case where you (transiently) have more than 10 'latest'
items for a single itemType.
On 28/03/2012 09:49, Maciej Miklas wrote:
yes - but anyway in your example you need "key range quey" and that
requires OOP, right?
On Tue, Mar 27, 2012 at 5:13 PM, Guy Incognito <dnd1...@gmail.com
<mailto:dnd1...@gmail.com>> wrote:
multiget does not require OPP.
On 27/03/2012 09:51, Maciej Miklas wrote:
multiget would require Order Preserving Partitioner, and this can
lead to unbalanced ring and hot spots.
Maybe you can use secondary index on "itemtype" - is must have
small cardinality:
http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/
On Tue, Mar 27, 2012 at 10:10 AM, Guy Incognito
<dnd1...@gmail.com <mailto:dnd1...@gmail.com>> wrote:
without the ability to do disjoint column slices, i would
probably use 5 different rows.
userId:itemType -> activityId
then it's a multiget slice of 10 items from each of your 5 rows.
On 26/03/2012 22:16, Ertio Lew wrote:
I need to store activities by each user, on 5 items
types. I always want to read last 10 activities on each
item type, by a user (ie, total activities to read at a
time =50).
I am wanting to store these activities in a single row
for each user so that they can be retrieved in single row
query, since I want to read all the last 10 activities on
each item.. I am thinking of creating composite names
appending "itemtype" : "activityId"(activityId is just
timestamp value) but then, I don't see about how to read
the last 10 activities from all itemtypes.
Any ideas about schema to do this better way ?