I would take simple approach. create one other CF "UserSkill"  with row key
same as profile_cf key,
In user_skill cf will add skill as column name and value null. Columns can
be added or removed.

UserProfile={
  '*ben*'={
   blah :blah
   blah :blah
   blah :blah
 }
}

UserSkill={
  '*ben*'={
    'java':''
    'cassandra':''
  .
  .
  .
  'linux':''
  'skill':'infinity'
 }

}


On Mon, Mar 26, 2012 at 12:34 PM, Ben McCann <b...@benmccann.com> wrote:

> I have a profile column family and want to store a list of skills in each
> profile.  In BigTable I could store a Protocol 
> Buffer<http://code.google.com/apis/protocolbuffers/docs/overview.html>with a 
> repeated field, but I'm not sure how this is typically accomplished
> in Cassandra.  One option would be to store a serialized 
> Thrift<http://thrift.apache.org/>or protobuf, but I'd prefer not to do this 
> as I believe Cassandra doesn't
> have knowledge of these formats, and so the data in the datastore would not
> not human readable in CQL queries from the command line.  The other
> solution I thought of would be to use a super column and put a random UUID
> as the key for each skill:
>
> skills: {
>   '4b27c2b3ac48e8df': 'java',
>   '84bf94ea7bc92018': 'c++',
>   '9103b9a93ce9d18': 'cobol'
> }
>
> Is this a good way of handling lists in Cassandra?  I imagine there's some
> idiom I'm not aware of.  I'm using the 
> Astyanax<https://github.com/Netflix/astyanax/wiki>client library, which only 
> supports composite columns instead of super
> columns, and so the solution I proposed above would seem quite awkward in
> that case.  Though I'm still having some trouble understanding composite
> columns as they seem not to be completely documented yet.  Would this
> solution work with composite columns?
>
> Thanks,
> Ben
>
>

Reply via email to