Hi Matthew, As you mention the map returned from multiget_slice is not order preserving, Pelops is doing this on the client side...
Cheers, Dan -- Dan Washusen Sent with Sparrow On Wednesday, 23 February 2011 at 8:38 PM, Matthew Dennis wrote: > The map returned by multiget_slice (what I suspect is the underlying thrift > call for getColumnsFromRows) is not a order preserving map, it's a HashMap so > the order of the returned results cannot be depended on. Even if it was a > order preserving map, not all languages would be able to make use of the > results since not all languages have ordered maps (though many, including > Java, certainly do). > > That being said, it would be fairly easy to change this on the C* side to > preserve the order the keys were requested in, though as mentioned not all > clients could take advantage of it. > > On Mon, Feb 21, 2011 at 4:09 PM, cbert...@libero.it <cbert...@libero.it> > wrote: > > > > > > As Jonathan mentions the compareWith on a column family def. is defines > > > the order for the columns *within* a row... In order to control the > > > ordering of rows you'll need to use the OrderPreservingPartitioner > > > (http://www.datastax.com/docs/0.7/operations/clustering#tokens-partitioners-ring). > > > > > > Thanks for your answer and for your time, I will take a look at this. > > > > > > As for getColumnsFromRows; it should be returning you a map of lists. The > > > map is insertion-order-preserving and populated based on the provided > > > list of row keys (so if you iterate over the entries in the map they > > > should be in the same order as the list of row keys). > > > > > > mmm ... well it didn't happen like this. In my code I had a CF named > > > comments and also a CF called usercomments. UserComments use an uuid as > > > row-key to keep, TimeUUID sorted, the "pointers" to the comments of the > > > user. When I get the sorted list of keys from the UserComments and I use > > > this list as row-keys-list in the GetColumnsFromRows I don't get back the > > > data sorted as I expect them to be. > > > It looks like if Cassandra/Pelops does not care on how I provide the > > > row-keys-list. I am sure about that cause I did something different: I > > > iterate over my row-keys-list and made many GetColumnFromRow instead of > > > one GetColumnsFromRows and when I iterate data are correctly sorted. But > > > this can not be a solution ... > > > > > > I am using Cassandra 0.6.9 > > > > > > I profit of your knownledge of Pelops to ask you something: I am > > > evaluating the migration to Cassandra 0.7 ... as far as you know, in > > > terms of written code, is it an heavy job? > > > > > > Best Regards > > > > > > Carlo > > > > > > > ----Messaggio originale---- > > > > Da: d...@reactive.org > > > > > > > > On Saturday, 19 February 2011 at 8:16 AM, cbert...@libero.it wrote: > > > > > Hi all, > > > > > I created a CF in which i need to get, sorted by time, the Rows > > > > > inside. Each > > > > > Row represents a comment. > > > > > > > > > > <ColumnFamily name="Comments" compareWith="TimeUUIDType" / > > > > > > > > > > > I've created a few rows using as Row Key a generated TimeUUID but > > > > > when I call > > > > > the Pelops method "GetColumnsFromRows" I don't get the data back as I > > > > > expect: > > > > > rows are not sorted by TimeUUID. > > > > > I though it was probably cause of the random-part of the TimeUUID so > > > > > I create > > > > > a new CF ... > > > > > > > > > > <ColumnFamily name="Comments2" compareWith="LongType" / > > > > > > > > > > > This time I created a few rows using the java > > > > > System.CurrentTimeMillis() that > > > > > retrieve a long. I call again the "GetColumnsFromRows" and again the > > > > > same > > > > > results: data are not sorted! > > > > > I've read many times that Rows are sorted as specified in the > > > > > compareWith but > > > > > I can't see it. > > > > > To solve this problem for the moment I've used a SuperColumnFamily > > > > > with an > > > > > UNIQUE ROW ... but I think this is just a workaround and not the > > > > > solution. > > > > > > > > > > <ColumnFamily name="Comments" type="Super" compareWith="TimeUUIDType" > > > > > CompareSubcolumnsWith="BytesType"/ > > > > > > > > > > > Now when I call the "GetSuperColumnsFromRow" I get all the > > > > > SuperColumns as I > > > > > expected: sorted by TimeUUID. Why it does not happen the same with > > > > > the Rows? > > > > > I'm confused. > > > > > > > > > > TIA for any help. > > > > > > > > > > Best Regards > > > > > > > > > > Carlo > > > > > > > > > > > > > > > > > > > > >