Save the skills in a single column in json format. Job done. On Mar 26, 2012 7:04 PM, "Ben McCann" <b...@benmccann.com> wrote:
> True. But I don't need the skills to be searchable, so I'd rather embed > them in the user than add another top-level CF. I was thinking of doing > something along the lines of adding a skills super column to the User table: > > skills: { > 'java': null, > 'c++': null, > 'cobol': null > } > > However, I'm still not sure yet how to accomplish this with Astyanax. > I've only figured out how to make composite columns with predefined column > names with it and not dynamic column names like this. > > > > On Mon, Mar 26, 2012 at 9:08 AM, R. Verlangen <ro...@us2.nl> wrote: > >> In this case you only neem the columns for values. You don't need the >> column-values to hold multiple columns (the super-column principle). So a >> normal CF would work. >> >> >> 2012/3/26 Ben McCann <b...@benmccann.com> >> >>> Thanks for the reply Samal. I did not realize that you could store a >>> column with null value. Do you know if this solution would work with >>> composite columns? It seems super columns are being phased out in favor of >>> composites, but I do not understand composites very well yet. I'm trying >>> to figure out if there's any way to accomplish what you've suggested using >>> Astyanax <https://github.com/Netflix/astyanax>. >>> >>> Thanks for the help, >>> Ben >>> >>> >>> On Mon, Mar 26, 2012 at 8:46 AM, samal <samalgo...@gmail.com> wrote: >>> >>>> plus it is fully compatible with CQL. >>>> SELECT * FROM UserSkill WHERE KEY='ben'; >>>> >>>> >>>> On Mon, Mar 26, 2012 at 9:13 PM, samal <samalgo...@gmail.com> wrote: >>>> >>>>> 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 >>>>>> >>>>>> >>>>> >>>> >>> >> >> >> -- >> With kind regards, >> >> Robin Verlangen >> www.robinverlangen.nl >> >> >