cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From DuyHai Doan <doanduy...@gmail.com>
Subject Re: Consistency when adding data to collections concurrently?
Date Sun, 13 Nov 2016 12:36:10 GMT
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