Производительность Cassandra: обновление столбцов по строкам

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

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

1 / таблица Group ( groupId Int, имя String, члены Map(userId -> role))

или же

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

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

1 ответ

Переписано из комментариев Марко -

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;

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

Другие вопросы по тегам