cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ali Akhtar <ali.rac...@gmail.com>
Subject Re: Consistency when adding data to collections concurrently?
Date Sun, 13 Nov 2016 12:37:57 GMT
Yeah, I am using set<label> (not set<text> though)

On Sun, Nov 13, 2016 at 5:36 PM, DuyHai Doan <doanduyhai@gmail.com> wrote:

> Yes you'd have to know the UDT values since it's part of the primary key
> to query your data.
>
> If I were you I would stick to using a set<text> and use UPDATE my_table
> SET labels = labels + <new_label>;
>
> It does work well with concurrent updates.
>
> On Sun, Nov 13, 2016 at 1:32 PM, Ali Akhtar <ali.rac200@gmail.com> wrote:
>
>> But then how would you query it? You'd need to know all the values of the
>> udt, right?
>>
>> On Sun, Nov 13, 2016 at 5:30 PM, DuyHai Doan <doanduyhai@gmail.com>
>> wrote:
>>
>>> "Also can you make a UDT a clustered key?" --> yes if it's frozen
>>>
>>> On Sun, Nov 13, 2016 at 1:25 PM, Ali Akhtar <ali.rac200@gmail.com>
>>> wrote:
>>>
>>>> If I wanted to get all values for an item, including its labels, how
>>>> would that be done in the above case?
>>>>
>>>> Also can you make a UDT a clustered key?
>>>>
>>>> On Sun, Nov 13, 2016 at 4:33 AM, Manoj Khangaonkar <
>>>> khangaonkar@gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Instead of using a collection, consider making label a clustered
>>>>> column.
>>>>>
>>>>> With this each request will essentially append a column (label) to the
>>>>> partition.
>>>>>
>>>>> To get all labels would be a simple query
>>>>>
>>>>> select label from table where partitionkey = "value".
>>>>>
>>>>> In general , read + update  of a column is an anti pattern in
>>>>> cassandra - which is what you are doing. What I suggesting
>>>>> above is appending more columns and not updating existing columns.
>>>>>
>>>>> regards
>>>>>
>>>>> regards
>>>>>
>>>>> On Sat, Nov 12, 2016 at 2:34 AM, Ali Akhtar <ali.rac200@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I have a table where each record contains a list<string> of
labels.
>>>>>>
>>>>>> I have an endpoint which responds to new labels being added to a
>>>>>> record by the user.
>>>>>>
>>>>>> Consider the following scenario:
>>>>>>
>>>>>> - Record X, labels = []
>>>>>> - User selects 2 labels, clicks a button, and 2 http requests are
>>>>>> generated.
>>>>>> - The server receives request for Label 1 and Label 2 at the same
>>>>>> time.
>>>>>> - Both requests see the labels as empty, add 1 label to the
>>>>>> collection, and send it.
>>>>>> - Record state as label 1 request sees it: [1], as label 2 sees it:
>>>>>> [2]
>>>>>>
>>>>>> How will the above conflict be resolved? What can I do so I end up
>>>>>> with [1, 2] instead of either [1] or [2] after both requests have
been
>>>>>> processed?
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> http://khangaonkar.blogspot.com/
>>>>>
>>>>
>>>>
>>>
>>
>

Mime
View raw message