2017-01-30 6 views
1

Увеличивает или уменьшает производительность cassandra, когда мы увеличиваем количество столбцов, подлежащих обновлению за строку в одном запросе.Производительность Cassandra: обновлять столбцы в строках

Сказать, что у нас есть таблица групп (например, FB групп), которые approches лучше:

1/таблица Group (идентификатор_группы Int, имя String, члены Карта (идентификатор пользователя -> роли))

или

2/таблица Group (идентификатор_группы Int, имя String, администраторы Set [Int], модераторов Set [Int], simpleMembers Set [Int])

Мы предполагаем, что пользователь может иметь замедлитель и Амин роли , поэтому при удалении этого пользователя мы ve обновить 2-х столбчатых администраторов и модераторов во втором aproach, чего нет в первом, где мы должны обновлять только членов столбца.

ответ

1

Copid от комментариев Марко -

Basically the write performance will not be affected but the read performance will suffer if you have very 
very long rows and always read stuff from the back of it. 
Over time when you insert the data cassandra will also have to read more sstables to satisfy your read requests, 
so with time read performance will degrade if you are not careful 

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

 create table groups(
     groupid int, 
     userid int, 
     groupName text static, 
     attributes Map(text , text), 
     primary key (groupid,userid) 
    ); 

запросов -

insert into groups (groupid,userid,groupName,attributes) values (100,200,'friends',{'admin':'false','moderator':'true','user-member':'true'}); 

update groups set attributes['admin'] = 'true' where groupid=100 and userid = 200; 

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

+0

Предположим, у вас 1000 членов в группе. при изменении имени группы вам необходимо обновить 1000 строк. разве это не так плохо? –

+0

Мы можем сохранить имя группы статическим – Gunwant

+1

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