Cassandra性能:每行更新列

Cassandra性能:每行更新列,cassandra,phantom-dsl,Cassandra,Phantom Dsl,当我们在一个查询中增加每行要更新的列数时,cassandra的性能会增加还是减少 我们有一个表组(例如FB组),其中最接近: 1/表组(groupId Int、名称字符串、成员映射(userId->roles)) 或 2/表组(groupId Int、名称字符串、管理员集[Int]、版主集[Int]、simpleMembers集[Int]) 我们假设用户可以有版主和amin角色 因此,当删除此用户时,我们必须在第二个aproach中更新2列管理员和版主,而在第一个aproach中,我们不必只更新

当我们在一个查询中增加每行要更新的列数时,cassandra的性能会增加还是减少

我们有一个表组(例如FB组),其中最接近:

1/表组(groupId Int、名称字符串、成员映射(userId->roles))

2/表组(groupId Int、名称字符串、管理员集[Int]、版主集[Int]、simpleMembers集[Int])

我们假设用户可以有版主和amin角色
因此,当删除此用户时,我们必须在第二个aproach中更新2列管理员和版主,而在第一个aproach中,我们不必只更新列成员。

Copid from Marko的评论--

我只想避免删除。如果我们能设计上述用例以避免删除

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


这样我们就不必删除表中的任何值。同样在将来,如果我们想添加新的属性,我们不必修改表定义。

假设一个组中有1000个成员。当组名更改时,必须更新1000行。这不是很糟糕吗?我们可以保持组名不变。基本上,写入性能不会受到影响,但是如果您有很长的行,并且总是从后面读取内容,则读取性能会受到影响。随着时间的推移,当您插入数据时,cassandra还必须读取更多的sstables以满足您的读取请求,因此,如果您不小心,随着时间的推移,读取性能将下降。@Gunwant所做的事情是正确的,只是组的静态列,您会没事的。此外,如果单个组中有10万用户,您可能需要引入bucketing。您是否有超过此数量的用户?(数千人很好…如果还有更多,请告诉我:p)@MarkoŠvaljek和Gunwaant谢谢,不,大约有10万用户嗯,当更多地关注阅读性能时,那么第一个是最快的?实际上,我有关于这个组的其他信息,我不想对每一行进行数据冗余,在我的情况下,这似乎太多了
       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;