cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "R. Verlangen" <ro...@us2.nl>
Subject Re: How to store a list of values?
Date Mon, 26 Mar 2012 20:17:43 GMT
" but any schema change will break it "

How do you mean? You don't have to specify the columns in Cassandra so it
should work perfect. Except for the "skill~" is preserverd for your list.

2012/3/26 samal <samalgorai@gmail.com>

>
> Save the skills in a single column in json format.  Job done.
>>
> Good if  it have fixed set of skills, then any add or delete changes need
> handle in app. ->read column first->reformat JOSN->update column (2 thrift
> calls).
>
>  skill~Java: null,
>  skill~Cassandra: null
> This is also good option, but any schema change will break it.
>
>
> On Mar 26, 2012 7:04 PM, "Ben McCann" <ben@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 <robin@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 <ben@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 <samalgorai@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 <samalgorai@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 <ben@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
>>>>
>>>>
>>>
>


-- 
With kind regards,

Robin Verlangen
www.robinverlangen.nl

Mime
View raw message