Interesting idea, R.V.  But what did you do with the row keys?

On Sat, Feb 4, 2012 at 2:29 PM, R. Verlangen <robin@us2.nl> wrote:
I also made something like this a while ago. I decided to go for the 2-rows-solution: by doing that you don't have the need for super columns. Cassandra is really good at reading, so this should not be an issue.

Cheers!


2012/2/4 Yiming Sun <yiming.sun@gmail.com>
Thanks Andrey and Chris.  It sounds like we don't necessarily have to use composite columns.  From what I understand about dynamic CF, each row may have completely different data from other rows;  but in our case, the data in each row is similar to other rows; my concern was more about the homogeneity of the data between columns.

In our original supercolumn-based schema, one special supercolumn is called "metadata" which contains a number of subcolumns to hold metadata describing each collection (e.g. number of documents, etc.), then the rest of the supercolumns in the same row are all IDs of documents belong to the collection, and for each document supercolumn, the subcolumns contain the document content as well as metadata on individual document (e.g. checksum of each document).

To move away from the supercolumn schema, I could either create two CFs, one to hold metadata, the other document content; or I could create just one CF mixing metadata and doc content in the same row, and using composite column names to identify if the particular column is metadata or a document.  I am just wondering if you have any inputs on the pros and cons of each schema.

-- Y.


On Fri, Feb 3, 2012 at 10:27 PM, Chris Gerken <chrisgerken@mindspring.com> wrote:



On 4 February 2012 06:21, Yiming Sun <yiming.sun@gmail.com> wrote:
I cannot have one composite column name with 3 components while another with 4 components?
 Just put 4 components and left last empty (if it is same type)?!

Another question I have is how flexible composite columns actually are.  If my data model has a CF containing US zip codes with the following composite columns:

{OH:Spring Field} : 45503
{OH:Columbus} : 43085
{FL:Spring Field} : 32401
{FL:Key West}  : 33040

I know I can ask cassandra to "give me the zip codes of all cities in OH".  But can I ask it to "give me the zip codes of all cities named Spring Field" using this model?  Thanks.
No. You set first composite component at first.

I'd use a dynamic CF:
row key = state abbreviation 
column name = city name
column value = zip code (or a complex object, one of whose properties is zip code)

you can iterate over the columns in a single row to get a state's city names and their zip code and you can do a get_range_slices on all keys for the columns starting and ending on the city name to find out the zip codes for a cities with the given name.

I think

- Chris