2013-07-12 3 views
2

Скажем, у меня есть следующий столбец Семья создана при CQL3:Удаление операции на столе CQL3 в Кассандре

CREATE TABLE users (
     id text, 
     freq int, 
     duration bigint, 
     PRIMARY KEY (id, freq) 
    )with clustering order by (freq desc); 

Я вставил некоторые данные в нем, например:

Row(id=u'key', freq=3, duration=1) 
    Row(id=u'key', freq=4, duration=2) 
    Row(id=u'key', freq=5, duration=4) 
    Row(id=u'key', freq=6, duration=6) 

Теперь я хочу сделать обновления. Именно поэтому я хочу обновить значение «freq» для определенной строки, указанной выше. Поскольку CQL3 не позволяет мне напрямую обновлять часть первичного ключа; Сначала мне нужно будет удалить эту запись, а затем снова вставить ее. Но проблема в том, что он не позволил бы мне выполнить операцию удаления с использованием столбца «Разделение» без раздела. например, это не позволит мне выполнить эту операцию:

Delete from users where id ='key' and duration =1; 

Означает ли кто-нибудь работу вокруг этого? я был бы очень признателен.

ответ

2

Время переосмысление вашей метамодели. Постарайтесь, чтобы ваша мета-модель была гибкой, чтобы поддерживать все подобные операции. Другими словами, составная комбинация вашей метамодели должна обладать гибкостью для обработки таких запросов на удаление или обновление.

Теперь, приступив к вашему примеру, если вы хотите обновить столбец freq, то прежде всего вам нужно удалить строку с этим значением частоты, а затем вставить правильную комбинацию. Попробуйте удалить строку с помощью комбинации клавиш соединения, скажем, в вашем случае,

delete from users where id ='key' AND freq= 3 

И тогда вы можете вставить свежую новую строку.

+0

Thanks abhi; единственная причина, по которой я имею freq в качестве первичного ключа, - это то, что я хочу, чтобы данные были отсортированы по w.r.t. но я получил ваше мнение; он решил мою проблему. –

+1

Это создаст много надгробий для стола, если вы выполните много таких операций, запросы со временем станут медленнее и медленнее, следите за этим. – Theo

2

Звучит так, как будто ваша схема плохо подходит для тех операций, которые вы хотите сделать. Вы должны начать с выяснения операций, которые вы хотите выполнить над данными, а затем разработать схему, которая ее поддерживает.

Это не сработает, если ваша схема не поддерживает то, что вы хотите сделать. Если вы более подробно описываете, что именно вы делаете, включая виды операций, которые вам нужно выполнить, возможно, мы сможем помочь вам разработать лучшую схему.

+0

Спасибо Тео за ответ. Я действительно разработал схему для поддержки моих запросов. причина, по которой я поставил freq как часть первичного ключа, - это то, что я хочу отсортировать мою таблицу w.r.t freq. и поскольку частота будет обновляться с течением времени; Мне нужно также обновить его. –

Смежные вопросы